Docker Registry是一个用于存储和分发Docker镜像的仓库。它允许开发者将自己的Docker镜像上传到一个中央仓库,然后其他人可以从该仓库中下载和使用这些镜像。
然而,使用Docker Registry的原生API进行管理镜像可能会有一些繁琐和不直观的地方。为了简化这一过程,我们可以使用一些可视化管理工具来更方便地管理Docker Registry。
案例准备:
表1-1 节点规划
IP | 主机名 | 节点 |
192.168.71.10 | Localhost | Localhost |
案例实施:
1.安装Docker
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# curl -L http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# vi /etc/yum.repos.d/centos.repo
[root@localhost ~]# yum clean all && yum repolist
[root@localhost ~]# yum -y install wget
[root@localhost ~]# wget -O /etc/yum.repos.d/docker-ce.repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum clean all && yum repolist
[root@localhost ~]# yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
关闭防火墙:
[root@localhost ~]# systemctl status firewalld.service #查看防火墙状态
[root@localhost ~]# systemctl stop firewalld.service #暂停防火墙
[root@localhost ~]# systemctl disable firewalld.service #永久关闭防火墙
启动服务:
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl enable docker.service
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl status docker
2.安装registry私有仓库
拉取私有镜像仓库到本地:
[root@localhost ~]# docker pull registry
启动私有镜像仓库:
[root@localhost ~]# docker run -d -p 5000:5000 --restart always --name registry registry:lastest
解析:
-d : 后台运行容器。
-p 5000:5000 : 将容器的5000端口映射到主机的5000端口,是 Registry 默认的监听端口。
--restart=always : 设置容器自动重启
--name registry : 为容器指定一个名称,命名为 registry。
registry:latest : 运行的镜像是 registry 的 latest 标签版本。
启动后,浏览器访问http://IP:5000端口,访问不到任何内容,正确的访问方式:http://IP:5000/v2/_catalog看到 {"repositories":[]},说明 docker registry 已经部署成功,只是仓库中还没有存储镜像
编辑docker配置文件/etc/docker/daemon.json
添加
"insecure-registries": ["192.168.71.10:5000"]
可以拉取 nginx 测试上传到 registry
[root@localhost ~]# docker pull nginx:latest
[root@localhost ~]# docker images #查看已有镜像
[root@localhost ~]# docker tag nginx:latest 192.168.71.10:5000/mynginx:1.0
[root@localhost ~]# docker push 192.168.71.10:5000/mynginx:1.0 #上传镜像到私有仓库
浏览器访问http://IP:5000端口
看到 {"repositories":["mynginx"]},说明镜像已经成功上传到 docker registry 私有仓库中。
3.搭建可视化WEB界面
klausmeyer/docker-registry-browser 是一个用于浏览和管理 Docker Registry 的 Web 界面工具。
[root@localhost ~]# docker pull klausmeyer/docker-registry-browser
部署服务:
[root@localhost ~]# SECRET_KEY=$(openssl rand -hex 64)
# 用于生成一个随机的 64 字符长度的十六进制字符串。
[root@localhost ~]# echo $SECRET_KEY
345a002763770e9338a8ccc2f90d1b67265b709859b3f25c64fa005fad202f2c24b102792193f9e86bdf90fd2d2868b208075edee0b924531bf5e0334ccf2417
[root@localhost ~]# docker run --name registry-browser -p 8080:8080 --restart=always \
> -e DOCKER_REGISTRY_URL=http://192.168.71.10:5000/v2 \
> -e SECRET_KEY_BASE=$SECRET_KEY \
> -d klausmeyer/docker-registry-browser
7c063f4e1a48c35dfa0b8a99af30dbe088e8ba0392a8c62c941dd32b07d56366
解析:
-e DOCKER_REGISTRY_URL=http://192.168.71.10:5000/v2:
设置环境变量 DOCKER_REGISTRY_URL,指定 Docker Registry 的 URL。在这个例子中,URL 指向 IP 地址为 192.168.71.10 的机器上的 Docker Registry 服务,端口号为 5000。
-e SECRET_KEY_BASE=$SECRET_KEY:
设置环境变量 SECRET_KEY_BASE,其值为之前生成的 SECRET_KEY。这个密钥通常用于加密会话和令牌等敏感信息。
浏览器访问 http://localhost:8080