01.概述
官方的 Docker Hub 是一个用于管理公共镜像的地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要 Docker Registry,它可以用来存储和管理自己的镜像。(主要用于将之前的项目做成镜像上传到私服,那么所有的客户端都可以拉取该镜像运行项目,即一次构建到处运行)
02.Docker Registry 私服安装
root@demo:~# cd /usr/local/docker/
root@demo:/usr/local/docker# mkdir registry
root@demo:/usr/local/docker# cd registry/
root@demo:/usr/local/docker/registry# vi 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
root@demo:/usr/local/docker/registry# docker-compose up -d
配置客户端:
root@demo:/usr/local/docker/registry# cd /etc/docker
root@demo:/etc/docker# vim daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"192.168.197.134:5000"
]
}
root@demo:/etc/docker# systemctl restart docker
root@demo:/etc/docker# docker info
...
Insecure Registries:
192.168.197.134:5000
...
root@demo:/etc/docker# docker tag tomcat 192.168.197.134:5000/tomcat
root@demo:/etc/docker# docker push 192.168.197.134:5000/tomcat
The push refers to repository [192.168.197.134:5000/tomcat]
root@demo:/etc/docker# docker tag tomcat 192.168.197.134:5000/tomcat:8.5.32
root@demo:/etc/docker# docker push 192.168.197.134:5000/tomcat:8.5.32
The push refers to repository [192.168.197.134:5000/tomcat]
Docker Registry WebUI:Docker服务器仓库只为我们提供了REST风格的API,这代表着可以自己编写应用程序来对接API就可以操作仓库(通常用python来开发,paython来做这种服务端的运维软件,一般不用Java因为其太笨重)。这里推荐两个Docker Registry WebUI 工具:docker-registry-frontend和docker-registry-web,两个工具的功能和界面都差不多,这里以 docker-registry-fontend 为例讲解
root@demo:~# cd /usr/local/docker/registry/
root@demo:/usr/local/docker/registry# docker-compose down
Stopping registry ... done
Removing registry ... done
Removing network registry_default
root@demo:/usr/local/docker/registry# vim 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
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.197.134
- ENV_DOCKER_REGISTRY_PORT=5000
root@demo:/usr/local/docker/registry# docker-compose up -d
运行成功后在浏览器访问:http://192.168.197.134:5000
03.真正实现:一次构建,到处运行
因为机器硬件原因,无法进行演示。将myshop项目进行以此构建,到处运行实践,该项目会利用nexus、gitlab、docker和registry实现容器化部署的效果,亦可按照自己的思维实现该效果