前言

本讲是从Docker系列讲解课程,单独抽离出来的一个小节,前些章节主要是理论+实战,本节讲述Docker高级应用registry本地仓库的部署和使用。

由于该镜像仓库比较单一,实际生产环境很少有公司使用,所以不做为重点学习,了解即可。主要了解它的一些使用原理、docker push的使用,以及daemon.json的简单配置。

注:如果你对企业级仓库Harbor感兴趣,点击进入 !

registry是一个非常简单的轻量级本地私有仓库,通过push命令,存储本地(自定义)镜像到私有仓库registry

镜像名称常用命名规则:${registry_name}/${repository_name}/$image_name}:$tag_name}

远端仓库地址urI/分类仓库名字/镜像名字:标签名字
示例: harbor.test.com/test/nginx:v1

预告:学习过程中,重点了解docker tagdocker push两个命令,同时简单了解一下通过/etc/docker/daemon.json来简单配置registry本地私有仓库。在学习过程,配置文件少一个逗号,tag时少一个标签,或者忘记了重新生效配置文件都有可能导致报错。 

一、部署本地私有镜像仓库registry步骤

1.docker pull 拉取私有镜像仓库到本地

docker pull registry
docker images

2.docker run 启动私有镜像仓库

docker run -d -p 5000:5000 --restart=always --name registry registry:latest

知识点:1、了解到registry它的默认端口是5000;2、简单了解--restart=always的使用,它的含义是容器出现故障时默认无限次的尝试重启。

ifconfig  #查看宿主机ens33/eth0网卡的IP地址

 可以获悉ip 192.168.31.100 

1.启动后,直接访问IP:5000端口,访问不到任何内容

http://192.168.31.100:5000

2.正确的访问方式/v2/_catalog

http://192.168.31.100:5000/v2/_catalog

看到界面,说明容器已经访问成功,仅仅是目前私有仓库中没有存储镜像而已

3.编辑docker配置文件

cp /etc/docker/daemon.json daemon.json.backup  #修改前先做备份,便于实验结束后还原
vim /etc/docker/daemon.json   #编辑配置文件,修改registry仓库地址
"insecure-registries":["registry.access.redhat.com","quay.io","192.168.31.100:5000"],
"exec-opts":["native.cgroupdriver=systemd"],
"live-restore":true

 注:配置registry仓库的ip地址,可以是远程云服务器的ip地址。

 特别注意:配置信息除最后一行外,每行末尾都有一个英文的逗号否则docker无法重启

systemctl daemon-reload   # 重载配置文件
systemctl restart docker  # 重启docker

  

4.尝试把本地的nginx镜像上传到私有镜像仓库registry

docker images #查看已有镜像
docker tag nginx:alpine 192.168.31.100:5000/test/mynginx:v1  #给已有镜像打标签
docker images #查看是否标记成功
docker push 192.168.31.100:5000/test/mynginx:v1              #上传镜像到私有仓库

docker tag语法:docker tag image_name:tag  repository_name/self_image_name:tag

注:repository_name需要和daemon.json中配置的地址一致,写错或者不写,在push时都会报如下错误:docker denied: requested access to the resource is denied 

注意:1、push前需要给将要上传的镜像打tag;2、push时需要给镜像指定tag标签,否则会push失败。 

5.本地浏览器,再次通过IP:5000访问容器

http://192.168.31.100:5000/v2/_catalog

访问成功,说明镜像已经成功上传到registry私有仓库中。 

6.下载本地仓库中的镜像

1.先移除本地已有镜像

docker images 
docker rmi 192.168.31.100:5000/test/mynginx:v1  #移除本地已有镜像,便于稍后从私有仓库重新下载
docker images 

2.从私有仓库中重新拉取镜像

docker pull 192.168.31.100:5000/test/mynginx:v1  #拉取时,前面需要携带私有仓库地址,尾部需要携带tag标签
docker images #查看是否拉取成功

7.收尾工作

为不影响其他实验,还原/etc/docker/daemon.json文件的文本内容。

docker rmi 192.168.31.100:5000/test/mynginx:v1   #删除镜像
docker rm -f registry:latest  #移除容器
rm /etc/docker/daemon.json    #移除配置的配置文件
mv /etc/docker/daemon.json.backup  /etc/docker/daemon.json  #还原备份文件
systemctl daemon-reload   # 重载配置文件
systemctl restart docker  # 重启docker

二、总结

本讲重点学习了registry的配置(在/etc/docker/daemon.json),并了解"live-restore":true的使用(详情见一.2);在学习过程中,着重了解docker tagdocker push两个命令的使用。当然,中间的坑本文已经尽可能的为你规避掉,如有疑问可留言共同探讨。

registry仅提供一个存储镜像的地方,它只简单的展示了私有仓库的镜像名称和tag,无法查看私有仓库更详细信息。实际生产环境很少用到registry私有仓库,所以下章节继续学习:Harbor企业级仓库

尾言

本讲内容是从 Docker入门到进阶里面抽离出来的内容,尽管知识点比较简单,也是docker学习路上不可或缺的一部分。希望对大家有所帮助,不当之处,望批评指正,学习路上,一起踩坑、一起砥砺前行!

下节预告:Harbor企业级仓库的安装部署|上传本地镜像到harbor

附注

猜你可能会感兴趣的内容

1、Docker外部浏览器访问容器 | 容器访问容器 | 访问容器的常用5种方式 | -p -P 详解

2、Docker容器五种(3+2)网络模式 | bridge模式 | host模式 | none模式 | container 模式 | 自定义网络模式详解

3、Docker容器间数据挂载与共享 | 远程共享&挂载数据卷 | sshfs挂载远程volume | 容器内部通过sshfs访问远程主机

4、Docker跨宿主机通信 | overlay和macvlay

5、Harbor企业级仓库的安装部署|避坑指南

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐