概述
取代DockerHub
官方的 Docker Hub 是一个用于管理公共镜像的地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要 Docker Registry,它可以用来存储和管理自己的镜像。
安装服务端
docker-compose安装
docker-compose.yml文件:
version: '3.1' services: registry: image: registry restart: always container_name: registry ports: - 5000:5000 volumes: - /usr/local/docker/registry/data:/var/lib/registry
测试
配置 Docker Registry 客户端
需要在 /etc/docker/daemon.json
中增加如下内容(如果文件不存在请新建该文件)
{ "registry-mirrors": [ "https://registry.docker-cn.com" //配置的源(如果配置了,可以省略) ], "insecure-registries": [ //主要添加的是这个 "registry服务器ip:5000" ] }
重新启动服务。
$ sudo systemctl daemon-reload $ sudo systemctl restart docker
检查客户端配置是否生效
使用 docker info
命令手动检查,如果从配置中看到如下内容,说明配置成功
测试镜像上传
## 拉取一个镜像 docker pull tomcat ## 查看全部镜像 docker images ## 标记本地镜像并指向目标仓库(ip:port/image_name:tag,该格式为标记版本号) docker tag tomcat 192.168.75.133:5000/tomcat //后面的tomcat是自己取得名字(任意) ## 提交镜像到仓库 docker push 192.168.75.133:5000/tomcat //这个tomcat就是上面的tomcat(自己取得名字)
注意:一个镜像由 ip:端口/name:版本 组成,而官服上省略了ip:端口
所有如果docker pull tomcat //此时tomcat前面没有加上ip:端口,所以默认就从官服上下载镜像
表示推送成功
从私服中拉取镜像
先删除镜像(将之前的镜像删除,方便测试)
docker rmi tomcat docker rmi 192.168.75.133:5000/tomcat
在拉取镜像
docker pull 192.168.75.133:5000/tomcat
部署 Docker Registry WebUI(就像hub.docker.com)
私服安装成功后就可以使用 docker 命令行工具对 registry 做各种操作了。然而不太方便的地方是不能直观的查看 registry 中的资源情况。如果可以使用 UI 工具管理镜像就更好了。这里介绍两个 Docker Registry WebUI 工具
两个工具的功能和界面都差不多,我们以 docker-registry-fontend
为例讲解
docker-registry-frontend
我们使用 docker-compose 来安装和运行,docker-compose.yml
配置如下:
version: '3.1' services: frontend: image: konradkleine/docker-registry-frontend:v2 ports: - 8080:80 volumes: - ./certs/frontend.crt:/etc/apache2/server.crt:ro - ./certs/frontend.key:/etc/apache2/server.key:ro environment: - ENV_DOCKER_REGISTRY_HOST=192.168.2.104 - ENV_DOCKER_REGISTRY_PORT=5000
启动之后出现
测试 http://192.168.2.104:8080/home
可以很直观的观察仓库中的镜像