Registry镜像仓库的安装与使用
任务目标
(1)了解目前主流的镜像仓库
(2)掌握registry私有镜像仓库的部署与使用
任务实施
基础信息
Docker私有仓库个宿主机配置信息
主机名 | IP地址 | 节点角色 |
registry | 192.168.110.80 | 私有仓库 |
node1 | 192.168.110.90 | 客户端1 |
node2 | 192.168.110.100 | 客户端2 |
实现
1)在registry主机上利用docker pull命令从docker hub中获取registry镜像,并利用docker images命令查看下载的registry镜像。
[root@registry ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
dc0decf4841d: Pull complete
6cb0aa443e23: Pull complete
813676e291ef: Pull complete
dc2fb7dcec61: Pull complete
916205650bfe: Pull complete
Digest: sha256:543dade69668e02e5768d7ea2b0aa4fae6aa7384c9a5a8dbecc2be5136079ddb
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
[root@registry ~]# docker images
2)利用docker run命令启动一个registry容器, 并挂载目录,利用容器提供私有仓库的服务,并利用docker ps命令查看registry容器是否运行
[root@registry ~]# mkdir /myregistry
[root@registry ~]# docker run -d -p 5000:5000 --name pri_registry -v /myregistry:/var/lib/registry registry
当容器的STATUS状态为UP时,表示容器正常启动、运行
[root@registry ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
281ab7d11aa7 registry "/entrypoint.sh /etc…" 9 seconds ago Up 8 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp pri_registry
9279742fa225 nginx:latest "/docker-entrypoint.…" 6 days ago Up 6 days 0.0.0.0:80->80/tcp, :::80->80/tcp hungry_clarke
3)利用curl -X GET http://127.0.0.1:5000/v2/_catalog命令,如果显示如下信息,则表示目前仓库中还没有镜像,此时私有仓库已经创建和启动完毕了
[root@registry ~]# curl -X GET http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}
Registry容器启动后,打开浏览器输入 http://ip_addr:5000/v2/
4)获取busybox镜像,修改标签名称后,将其上传到本地仓库中
[root@registry ~]# docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
a46fbb00284b: Pull complete
Digest: sha256:768e5c6f5cb6db0794eec98dc7a967f40631746c32232b78a3105fb946f3ab83
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest
[root@registry ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 60c8a892f36f 6 weeks ago 192MB
busybox latest 517b897a6a83 7 weeks ago 4.27MB
registry latest c18a86d35e98 13 months ago 25.4MB
centos latest 5d0da3dc9764 3 years ago 231MB
[root@registry ~]# docker tag busybox:latest 192.168.110.10:5000/busybox:latest
[root@registry ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 60c8a892f36f 6 weeks ago 192MB
192.168.110.80:5000/busybox latest 517b897a6a83 7 weeks ago 4.27MB
busybox latest 517b897a6a83 7 weeks ago 4.27MB
registry latest c18a86d35e98 13 months ago 25.4MB
centos latest 5d0da3dc9764 3 years ago 231MB
5)将镜像192.168.110.80:5000/busybox上传到本地仓库中
[root@registry ~]# docker push 192.168.110.80:5000/busybox:latest
The push refers to repository [192.168.110.80:5000/busybox]
Get "https://192.168.110.80:5000/v2/": http: server gave HTTP response to HTTPS client
如果出现上述提示,则表示当前采用了非HTTTPS协议进行上传(本地仓库默认使用HTTTPS协议进行上传),则可以进行(7)
6)修改/usr/lib/systemd/system/docker.service文件
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.110.80:5000
保存后退出,重启docker服务
[root@registry ~]# systemctl daemon-reload
[root@registry ~]# systemctl restart docker
重启registry容器
[root@registry~]# docker restart pri_registry
pri_registry
7)再次上传镜像192.168.110.80:5000/busybox到本地仓库中
[root@registry ~]# docker push 192.168.110.80:5000/busybox:latest
验证
1)在node1和node2上修改/usr/lib/systemd/system/docker.service文件
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.110.80:5000
2)重启docker服务
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl restart docker
3)在客户端node1和node2上获取私有仓库中的busybox镜像
[root@node1 ~]# docker pull 192.168.110.80:5000/busybox
Using default tag: latest
latest: Pulling from busybox
4a52ebec3b53: Pull complete
Digest: sha256:e068ca4d0c37ee49704482526ffa96239dee80ff08442e4f7e17977ccc431bb3
Status: Downloaded newer image for 192.168.110.80:5000/busybox:latest
192.168.110.80:5000/busybox:latest
[root@node1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 60c8a892f36f 6 weeks ago 192MB
192.168.110.80:5000/busybox latest 517b897a6a83 7 weeks ago 4.27MB