Docker 之registry私有仓库搭建
Docker 之registry私有仓库搭建
官方提供的私有仓库docker registry用法
https://yeasy.gitbooks.io/docker_practice/repository/registry.html
1.下载registry镜像并且启动私有仓库容器
(1)下载
docker pull registry
私有仓库会被创建在容器的/var/lib/registry下,因此通过-v参数将镜像文件存储到本地的/opt/data/registry下 端口映射容器中的5000端口到宿主机的5000端口
(2)启动
docker run -d -p 服务器端口:容器端口 -v 服务器目录:私有仓库容器目录
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
(3)测试运行
检查启动的registry容器
docker ps
测试连接容器
# telnet 服务器IP 端口(根据运行的端口)
telnet 10.0.0.209 5000
直接用浏览器访问
http://ip+端口(5000)可以测试/v2/_catalog
页面会有如下显示
2.修改镜像tag
以docker registry的地址端口开头
# 语法: docker tag 原镜像名 服务器IP:5000/镜像名
如:
# docker tag centos 10.0.0.209:5000/mycentos
这个时候我们会遇到一个https限制推送镜像的问题
3.解决非 HTTPS 方式推送镜像问题
(1)修改/etc/docker/daemon.json配置
通过 Docker 的配置选项来取消这个限制,这里必须写正确json数据
添加一行配置
下面的ip为运行私有仓库的ip,端口5000
[root@node209 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://t7h7r7wr.mirror.aliyuncs.com"],
"insecure-registries":["10.0.0.209:5000"]
}
(2)添加/lib/systemd/system/docker.service配置
写入到[Service]配置块中,加载此配置文件
vim /lib/systemd/system/docker.service
添加一行配置
EnvironmentFile=-/etc/docker/daemon.json
结果如下截图:
(3)重新加载docker及重启并重启仓库容器
重新加载docker
systemctl daemon-reload
重启docker
systemctl restart docker
重启仓库容器
# docker ps -a # 找到registry 镜像所对应的容器ID
# dokcer start 容器ID
(4)推送本地镜像
# docker push 10.0.0.209:5000/mycentos
5.查看推送情况
由于docker registry没有web界面,但是提供了API数据
要想查看已经上传的镜像, 通过以下链接访问即可查看:
官网教程:https://docs.docker.com/registry/spec/api/#listing-repositories
注:10.0.0.209为部署仓库的服务器IP
法一:
curl http://10.0.0.209:5000/v2/_catalog
法二:
浏览器访问http://10.0.0.209.10:5000/v2/_catalog
法一:截图
法二:截图
都可得上传镜像到私有仓库成功
6.删除本地镜像,从私有仓库中下载
#docker rmi 10.0.0.209:5000/mycentos #删除刚才上传的本地镜像
#docker pull 10.0.0.209:5000/mycentos #从私有仓库pull下载镜像
#docker images # 查看镜像