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
- 此命令将registry运行在Dokcer 宿主机的5000 端口上。
- 使用
/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上镜像标签