构建docker私有镜像库
环境准备
Docker私有镜像库,分为服务端和客户端。服务端和客户端都要有docker环境。除此之外,服务端运行registry容器,完成镜像库的功能。客户端通过docekr pull、push等命令与服务端交互。环境说明如下表:
对象 | 版本 | IP | 备注 |
---|---|---|---|
服务端 | Ubuntu 14.04 | 192.168.142.128 | 在此主机上搭建镜像库 |
客户端 | Ubuntu 14.04 | 192.168.142.131 | 在此主机上测试是否能通过http协议拉取镜像服务器里的镜像。 |
Docker引擎 | 1.6.2以上 | 无 | |
Registry镜像 | 2.0以上 | 无 | 可以从云盘中获取registry的镜像包。 |
Skylar_beanstalkd镜像包 | Latest | 无 | 可以从云盘中获取skylar_beanstalkd的镜像包 |
注意:下文中涉及到的IP(有红色标记),要替换成实际使用的IP。
安装docker
注意:如果未安装docker或docker版本低于1.6.2,则安装到最新的docker版本。
$ sudo apt-get update
$ sudo apt-get install docker.io
搭建镜像服务器
登录服务器
$ ssh root@192.168.142.128
导入registry镜像
$ sudo docker load < registry.tar
启动registry
$ sudo mkdir –p /opt/data
$ cd
$ docker run -d -p 5000:5000 --restart=always --name registry -v /opt/data/registry:/var/lib/registry registry:2
登录客户端,进行测试和验证
登录客户端主机
$ ssh root@192.168.142.131
添加docker配置
客户端通过HTTP协议拉取镜像,需要添加insecure-registry配置。在ubuntu14.04的环境下编辑docker的配置文件中,添加DOCKER_OPTS选项内容。,操作如下:
$ sudo vi /etc/default/docker
加入如下内容(IP应为服务端IP):
DOCKER_OPTS="--insecure-registry 192.168.142.128:5000"
重启docker,使配置生效
$ sudo service docker restart
测试1,上传镜像到服务端
(1)上传之前,先对客户端上的某个镜像打tag。下面以skylar_beanstalkd镜像为例。通过docker images命令,查到skylar_beanstalkd的容器id为a1b2c3d4e5(注意,实际部署时要对此id进行替换)。
$ sudo docker tag a1b2c3d4e5 192.168.142.128:5000/skylar_beanstalkd
(2)上传镜像
$ sudo docker push 192.168.142.128:5000/skylar_beanstalkd
测试2,从服务端拉取镜像
$ sudo docker pull 192.168.142.128:5000/skylar_beanstalkd
查看镜像是否拉取成功
$ sudo docker images | grep skylar_beanstalkd
如果结果中,查到192.168.142.128:5000/skylar_beanstalkd,则表明拉取成功。
参考文献
- docker官网资料,https://docs.docker.com/registry/deploying/