docker 创建私有仓库
介绍
本文介绍docker 如何创建私有仓库,如何将本地镜像 push 到私有仓库,如何查看私有仓库的镜像,如何从私有仓库中Pull 镜像等。本次采用windows docker 来演示(采用 linux 系统CentOS 中的dockder 也类似 )。
必备条件
- 两台装有docker的主机:我这里采用两台装有docker的windows server 2019,其中作为docker仓库的主机,安装的是docker desktop。如果是采用linux系统CentOS也类似。
- Registry仓库镜像:其中一台docker主机pull Registry 镜像,用做仓库。docker hub的registry镜像默认版本为 v2.x,地址为 https://registry.hub.docker.com/_/registry
- 两台docker 主机,能相互通信。
建立仓库
1.在用作仓库的docker 主机上,运行基于Registry镜像的仓库容器,创建私有仓库。
`docker run -d -p 5000:5000 --restart always -v /opt/registry:/var/lib/registry --name FyyRegistry registry`
查看容器运行情况:
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。
浏览器访问http://127.0.0.1:5000/v2,出现下面情况说明registry运行正常。
至此,则私有仓库创建完毕,接下来,开始将镜像上传至本地仓库。
上传镜像到私有仓库
建立私有仓库后,就可以将从其他地方获取的镜像,或者自己构建的镜像,上传至自己的私有仓库
1.给镜像打标签,以为我本地j镜像 my-asp-app 为例演示:
docker image tag my-asp-app 127.0.0.1:5000/my-asp-app:v1
其中,my-asp-app 是我本地镜像,127.0.0.1:5000/my-asp-app:v1 是我根据镜像,重新打的tag。可以看出,这是一个URL地址。其实,每个镜像的仓库,都是一个URL地址,简写的镜像地址,如 my-asp-app,它的完整URL前缀是docker hub 官网。
查看重新打标签的镜像如下:
2.上传镜像到私有仓库
docker push 127.0.0.1:5000/my-asp-app:v1
docker push后,镜像就会存在私有仓库了。可查看私有仓库的镜像:
curl http://127.0.0.1:5000/v2/_catalog
访问 http://127.0.0.1:5000/v2/_catalog 查看私有仓库目录,可以看到刚上传的镜像了
如果要查看某个镜像的版本,比如查看my-asp-app的版本,则访问 http://127.0.0.1:5000/v2/my-asp-app/tags/list 。
pull 私有仓库镜像
在一台docker 主机建立私有镜像仓库,并上传镜像后。在另一台docker主机,就可以pull私有仓库的镜像了。
1.修改daemon配置:
登录另一台主机,修改daemon.json配置文件,添加 "insecure-registries": ["172.20.111.164:5000"]
说明:其中172.20.111.164是创建docker 仓库的主机地址。daemon.json文件位置为 C:\ProgramData\docker\config,如果daemon.json不存在,则手动创建。创建之后,重启docker。
(centos7.6的话,daemon.json的位置是 /etc/docker/daemon.json)
重启docker,查看是否生效:
2.pull 私有仓库镜像:
docker pull 172.20.111.164:5000/my-asp-app:v1