Docker之私有仓库的搭建

hub.docker.com上可以保存镜像,但是网速相对较慢,在内部环境中搭建一个私有的公共仓库是个更好的方案,今天我们就来实战搭建私有docker仓库吧;

环境规划

需要两台机器:docker私服仓库的server和使用docker的普通机器,这两个机器都是centos7版本的server,一台机器名为 centos7-1,ip为192.168.6.78的私有仓库服务器,另一台机器名为centos7-2,ip为192.168.6.173的运行docker服务的普通服务器 。      

在centos7-1上安装docker的私有仓库

sudo docker run -d -v /home/sukang/registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latest

-v /home/sukang/registry:/var/lib/registry 默认情况下,会将仓库存放于容器内的/var/lib/registry目录下,指定本地目录挂载到容器。

-p 5000:5000 端口映射

--restart=always 在容器退出时总是重启容器,主要应用在生产环境

--privileged=true 在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误OSError: [Errno 13] Permission denied: ‘/tmp/registry/repositories/liibrary’)或者(Received unexpected HTTP status: 500 Internal Server Error)错误

--name registry 指定容器的名称

通过执行上面的run命令,实际我们已经完成了Docker私有仓库的搭建。

推送nginx到registry仓库

使用tag命令修改标签

sudo docker tag nginx localhost:5000/nginx

推送到仓库

sudo docker push localhost:5000/nginx

执行命令curl -X GET http://127.0.0.1:5000/v2/_catalog,收到的响应如下,是一个json对象,表示已经有了nginx的镜像

好的,私有仓库已经创建和启动完毕了,接下来试试如何使用吧。

支持http协议的推送

正常情况下,应用服务器推送镜像到仓库用的是https,此处我们通过命令行来测试推送用的是普通的http,所以需要修改docker的启动参数,使之允许以http协议工作;

       执行推送镜像的机器是centos7-2,所以登录到此机器

       执行命令docker pull  tomcat,从hub.docker.com下载最新版本的tomcat镜像,如下图:

下载完毕后,执行docker images查看镜像的信息,如下图:

如上图红框所示,这个镜像的ID是ca9e2fccef98,所以我们执行以下命令,给这个镜像添加一个带有私有仓库IP的TAG,这样后面才能成功推送到私有仓库:

docker tag ca9e2fccef98 192.168.6.78:5000/tomcat

再执行docker images查看镜像的信息,如下图,出现了一个新的镜像,REPOSITORY是192.168.6.78:5000/tomcat: 

执行以下命令进行推送:

docker push 192.168.6.78:5000/tomcat

此时遇到一个问题

解决方案是:

在/etc/docker下的daemon.json文件中,写入:

{ "insecure-registries":["192.168.6.78:5000"]}

重启docker:

systemctl restart docker.service 

然后再执行

docker push 192.168.6.78:5000/tomcat

推送成功后,在浏览器中打开 http://192.168.6.78:5000/v2/_catalog,查看私有仓库的镜像信息,都能见到如下内容:

使用私有仓库的镜像

在centos7-2机器上,先执行以下命令将本地镜像删掉:

docker rmi 192.168.6.78:5000/tomcat tomcat

再执行以下命令,用私服上的镜像来创建一个容器,映射8080端口:

docker run --name tomcat001 -p 8080:8080 -idt 192.168.6.78:5000/tomcat

本地没有镜像就去私服下载,如下图: 

centos7-2的IP是192.168.6.173,所以在当前电脑上打开浏览器,输入:192.168.6.173:8080,可以看到下图熟悉的tomcat欢迎页:

至此本次实战就结束了,希望能对您的私有仓库搭建有所帮助。

猜你喜欢

转载自blog.csdn.net/suchahaerkang/article/details/83863531