1、说明
在 Docker 中,当执行 docker pull xxx时,是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库,上面的镜像,大家都可以看到,也可以使用,但是速度较慢。并且要在公司中使用 Docker,我们基本不可能把商业项目上传到公共仓库中,那如果要多个机器共享,怎么办?解决办法就是搭建私有仓库。
2、环境
docker服务器地址:10.*.*.87:
docker私有仓库服务器,运行registry容器;
mkdir –p /data/registry #建立镜像上传目录
3、部署(服务端操作)
(1)下载镜像registry
#docker pull registry
#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
Registry latest f32a97de94e1 2 months ago 25.8MB
(2)运行registry容器
#docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --name registry registry:latest
参数说明:
-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
-v:把宿主机的/data/registry目录绑定到容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
--name registry:创建容器命名为registry,你可以随便命名;
registry:latest:上面pull下来的镜像;
(3) 测试镜像仓库中所有的镜像
#curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}
现在是空的,因为才刚运行,里面没有任何镜像内容。
(4)创建修改/etc/docker/daemon.json文件:
{
"registry-mirrors": [ "https://registry.docker-cn.com"],
"insecure-registries": [ "10.*.*.87:5000"]
}
重启服务:
#systemctl restart docker
(5)为镜像打标签
docker tag centos:latest 10.*.*.87:5000/centos:v1
格式说明:Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
centos:latest 源镜像;
10.*.*.87:5000/centos:v1目标镜像,也是registry私有镜像服务器的IP地址和端口;
(6) 上传到镜像服务器
#docker push 10.*.*.87:5000/centos:v1
(7)检查上传的镜像
# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":["centos","test001","ubuntu"]}
列出所有镜像
# curl http://10.*.*.87:5000/v2/_catalog
{"repositories":["centos","test001","ubuntu"]}