天天看点

docker部署私有镜像仓库

docker部署私有仓库

1.背景

容器镜像的管理主要围绕镜像仓库(Registry)来进行。在实际应用中,无论开发人员或CI系统发布镜像,还是测试人员或运维人员下载镜像,都要通过镜像仓库来完成。镜像仓库分为公有仓库和私有仓库两种,例如Docker Hub就属于公有仓库,公有仓库的优点是可以直接使用,无须自己维护。但考虑到访问效率和镜像安全等方面的原因,企业可构建自己内部的私有仓库,供内部员工上传、下载镜像使用。 
           

2.系统环境

docker私有仓库主机 	192.168.1.100    19.03.4    centos7.2.1511
docker主机           192.168.1.101	19.03.4    centos7.2.1511
           

3.构建私有仓库(在192.168.1.100这台主机上操作)

3.1 下载registry镜像

docker pull registry

如果下载速度过慢,建议Docker配置官方国内加速镜像
vim /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "graph": "/var/lib/docker"
}
注意:目前常用三方加速器有: 网易 、 USTC 、 DaoCloud 、 阿里云。
           

3.2 创建容器并运行

docker run -itd -p 192.168.1.100:5000:5000 -v /data/docker/registry:/var/lib/registry --restart=always --name registry registry:latest

参数说明:
-itd:开启交互模式,分配一个伪终端,以后台方式运行
-p:把容器的5000端口映射到宿主机指定IP的5000端口上
-v:把容器的/var/lib/registry目录映射到宿主机的/data/docker/registry目录,/var/lib/registry是容器中存放镜像文件的目录,来实现数据的持久化
--restart=always:重启策略,容器异常退出会自动重启容器
--name:指定容器的名称为registry
           

3.3 查看仓库中的镜像

curl http://192.168.1.100:5000/v2/_catalog
{"repositories":[]}
注意:因为才刚运行,还未上传任何镜像,所以是空的。
           

4.测试(在192.168.1.101这台主机上操作)

4.1 将之前创建好的镜像打上标签

[[email protected] ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
nginx                 1.12                4037a5562b03        17 months ago       108MB

[[email protected] ~]# docker tag 4037a5562b03 192.168.1.100:5000/nginx:1.12

[[email protected] ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
192.168.1.100/nginx   1.12                4037a5562b03        17 months ago       108MB
nginx                 1.12                4037a5562b03        17 months ago       108MB

           

4.2 修改配置文件,添加私有仓库地址

vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "graph": "/var/lib/docker",
  "insecure-registries": ["192.168.1.100:5000"]
}
           

4.3 重启docker服务

systemctl restart docker
           

4.4 将镜像传到私有仓库

docker push 192.168.1.100:5000/nginx:1.12
           

4.5 查看私有仓库中的镜像

curl http://192.168.1.100:5000/v2/_catalog
{"repositories":["nginx"]}