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"]}