本文介绍搭建Docker官方提供的registry仓库,并在其它机器上提交和拉取搭建的私有库中的镜像。
搭建私有Docker镜像仓库
拉取registry仓库镜像
docker pull registry
创建本机镜像存放目录
mkdir /home/kareza/backup/registry
运行registry镜像
docker run -d -v /home/kareza/backup/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry
其中
-d 后台运行
-v 将本机目录挂载到运行的docker容器中(即本机的/home/kareza/backup/registry挂载到运行的registry容器的/var/lib/registry目录),所以当容器被摧毁时,镜像仓库的数据依然完好的存储在本机
-p 端口映射(本机端口:容器端口)
-resatrt=always 重启docker时总是启动该容器
--name 容器名
最后一个registry表示要运行的镜像名
查看是否运行成功
curl http://localhost:5000/v2/_catalog
其中 {"repositories":[]} 表示镜像仓库为空
提交拉取镜像前置条件
需要注意的是,官方建议我们给Docker私有仓库服务配置https证书,这是不容易的,所以不在本文的讨论范围。
本文采取的方法是在客户端机器(即需要提交或拉取镜像的机器)上手动添加Docker私有仓库地址为可信任的仓库地址,这意味着我们需要在每一台客户端机器做同样的添加信任操作,好在,这并不困难。
只需要修改docker的服务配置(注意是客户端机器的docker)
vim /etc/docker/daemon.json
在json文件中添加
“insecure-registries” : [ "ip:5000" ]
注意,这里的ip是部署的私有仓库地址和服务端口。
重启docker服务使配置生效
提交镜像
为本地的images打tag
假设本地存在images hello-world:latest
git tag hello-world:latest ip:5000/hello-world:latest
注意把ip和port替换成私有仓库的地址
docker push ip:5000/hello-world:latest
再次验证私有镜像仓库中的镜像
curl http://ip:5000/v2/_catalog
拉取镜像
删除本地刚刚tag出来的镜像
docker rmi ip:5000/hello-world:latest
拉取私有镜像仓库中的hello-world镜像
docker pull ip:5000/hello-world:latest
查看私有仓库中某镜像的tag列表
curl http://ip:5000/v2/your-image-name/tags/list