Docker本地仓库简单使用


docker镜像和容器常用命令

docker镜像命令

获取镜像:docker pull centos
查看镜像:docker images
查看镜像详细信息:docker inspect [NAME:tag]
搜索镜像:docker search [NAME:tag]
删除镜像:docker rmi [NAME:tag&ID]
​ -f:强制删除
创建镜像:docker commit
导入镜像:cat 镜像.tar |docker import - centos:7
存出镜像:docker save -o centos:7.tar centos7
载入镜像:docker load --imput cnetos7.tar
​ 或者:docker load < centos7.tar
上传镜像:docker push
添加标签后在上传,如下:
​ docer tag centos:7 mark/centos:7
​ docker push mark/centos:7

docker容器命令

新建容器:docker create -it centos:tag
启动容器:docker start NAME
创建并后台启动:docker run --name mynginx -d nginx
-d 守护进程模式
创建启动并连接容器并启动一个bash终端:docker run -it mynginx /bin/bash
当docker run来创建并启动容器时,Docker在后台运行操作包括:
1,检查本地是否存在指定镜像,不存在则从共有仓库下载
2,利用镜像创建并启动一个容器
3,分配一个文件系统,并在只读的镜像层外挂载一层可读写层
4,从宿主机配置的网桥借口中桥接一个虚拟借口到容器中
5,从地址池分配一个ip地址给容器
6,执行用户指定的应用程序
7,执行完毕后终止
其中-t选项让docker分配一个伪终端并绑定到容器的标准输出上,-i则让容器的标准输入保持打开
查看容器:docker ps -a
关闭容器: docker stop NAME
docker stop它首先会向容器发送一个SIGTERM信号,等一段时间后,默认10秒后,在发送SIGKILL来终止rongqi
启动容器:docker start NAME
强行终止:docker kill ID
进入容器运行命令:docker exec -it ID /bin/bahs
当然,也可以不进入容器运行命令:docker exec NAME ps

删除容器:docker rm ID
删除运行中的容器:docker rm -f ID
导出容器:docker export ID > name.tar
导入容器:cat name.tar | docker import - test/centos:7

创建和使用本地私有仓库:

I. 1,下载安装registry

我们通过官方提供的registry镜像来简单搭建本地的私有仓库环境
docker run -d -p 5000:5000 registry
这将自动下载并启动一个registry容器,创建本地的私有仓库服务
默认情况下回创建在容器的/tmp/registry目录下,可以通过-v参数来讲镜像放在本地的指定路径上
下面例子将上传的镜像放到/opt/registry 目录
docker run -d -p 5000:5000 -v /opt/registry:/tmp/registry registry

[root@gitlab conf]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED            SIZE
registry                  latest              c6c14b3960bd        4 weeks ago         33.28 MB

II. 2,确保registry是up状态

我们可以看到registry一件被run起来来

[root@gitlab conf]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
29c0811c9195        registry               "/entrypoint.sh /etc/"   17 minutes ago      Up 17 minutes       0.0.0.0:5000->5000/tcp   awesome_wescoff
240c99335256        marksugar/nginx        "/usr/local/nginx/sbi"   2 hours ago         Up 2 hours          0.0.0.0:81->80/tcp       mynginx
b889bfd7a6ee        marksugar/nginx:8.33   "/bin/bash"              21 hours ago        Up 7 hours          0.0.0.0:80->80/tcp       nginx
[root@gitlab conf]# 

III. 3,将镜像标记并上传

使用docker tag将一个镜像标记,格式如下:
10.10.239.222:5000/alpine,其中10.10.239.222是本地仓库地址,5000为仓库端口,alpine是镜像标签
这里的10.10.239.222可以是本地的ip也可以是域名,如:www.linuxea.com

[root@gitlab conf]# docker tag benyoo/alpine:3.4.20160812 10.10.239.222:5000/alpine

当标记完成后,本地的images中会存放一个和标记名称一样的镜像,我们将这个镜像上传即可

[root@gitlab conf]# docker push 10.10.239.222:5000/alpine
The push refers to a repository [10.10.239.222:5000/alpine]
93d40cd73394: Pushed 
4fe15f8d0ae6: Pushed 
latest: digest: sha256:41250fea2bc5dfdc204d54e4d2108aae7a452876bed359ae277983aea4ae3e02 size: 739
[root@gitlab conf]# 

IV. 4,使用本地仓库pull

尝试一次pull方才进行push到本地仓库的镜像,你会发现本地镜像速度比docker hub要快上很多

[root@localhost ~]# docker pull 10.10.239.222:5000/alpine
Using default tag: latest
latest: Pulling from alpine
Digest: sha256:41250fea2bc5dfdc204d54e4d2108aae7a452876bed359ae277983aea4ae3e02
Status: Downloaded newer image for 10.10.239.222:5000/alpine:latest
[root@localhost ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
marksugar/alpine            latest              07a4ff4374e1        23 hours ago        11.54 MB
debian                      latest              031143c1c662        29 hours ago        125.1 MB
marksugar/nginx             8.30                e50a274c5823        33 hours ago        13.77 MB
10.10.239.222:5000/alpine   latest              0ae37ed604b2        2 weeks ago         11.54 MB
benyoo/alpine               3.4.20160812        0ae37ed604b2        2 weeks ago         11.54 MB
nginx                       latest              0d409d33b27e        3 months ago        182.7 MB
[root@localhost ~]# 

V. 报错解决办法:

Error response from daemon: Get https://10.10.239.222:5000/v1/_ping: http: server gave HTTP response to HTTPS client

只需要两步即可:
1,Create or modify /etc/docker/daemon.json

[root@localhost ~]# echo '{ "insecure-registries":["10.10.239.222:5000"] }' > /etc/docker/daemon.json
[root@localhost ~]# cat /etc/docker/daemon.json
{ "insecure-registries":["10.10.239.222:5000"] }

2,重载docker
root@localhost ~]# systemctl restart docker
如果你有任何疑问你可以在本站留言

15 分享

您可以选择一种方式赞助本站

支付宝扫码赞助

支付宝扫码赞助

日期: 2016-09-02分类: Docker

标签: docker

发表评论