Docker 搭建私有仓库

1 背景知识

Docker HUB 上的免费账户只能将你的镜像公开,如果转为私有镜像需要付费。有没有一种方案,即想保持镜像的私有化,又不想付费呢?本章主要针对这个问题有一个简单的解决方案。

2 搭建私有Registry

2.1 下载registry镜像并运行

docker run --name registry -h node111 -d -p 5000:5000 -v $HOME/registry:/var/lib/registry registry:2
  1. 此命令将registry运行在Dokcer 宿主机的5000 端口上。
  2. 使用 /home/registry 挂在为 /var/lib/registry 目录,作为存储镜像文件的默认位置。 请参考:docker run

2.2 查看registry容器IP地址

docker inspect registry | grep IP
//屏幕输出:
   "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
                    "IPAMConfig": null,
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,

请参考 docker inspect

2.3 将新镜像修改为符合私服规范的Tag

 docker tag centos:7.2.1511 172.17.0.2:5000/centos:7.2.1511
Warning

注意必须使用相同的仓库名称否则,推送将会失败。

2.4 修改配置文件使docker支持http

2.4.1 配置daemon.json 文件

vi /etc/docker/daemon.json

2.4.2 使用http的网络和地址


{
  "data-root": "/data",
  "registry-mirrors": ["http://hub-mirror.c.163.com"],
  "insecure-registries":["0.0.0.0:5000"]
}

2.4.3 重启docker 服务

systemctl restart docker

2.5 推送镜像到私有仓库

更多命令语法请参考: docker push

docker push 172.17.0.2:5000/centos:7.2.1511

3 如何查看私有服务器上有什么镜像

Docker CURL 验证私服库Registry上有什么镜像
DockerCURL 验证私服库Registry上镜像标签