1.首先需要搭建好docker swarm集群
如图,我们搭建了一个两个节点的集群
2.运行私服镜像
docker run -d -p 5000:5000 --name registry --restart=always registry
(registry仓库默认开启5000端口)
3.docker配置镜像仓库
(1)让docker信任该私服
vi /etc/docker/daemon.json
{ "insecure-registries":["myregistry:5000"] }
<!--没有目录自己创建-->
(2)修改host文件
vi /etc/hosts 增加配置
192.168.60.106 myregistry
<!--192.168.60.106是主节点的IP,私服容器就运行在主节点上 -->
其它工作节点配置私服也是以上两步
4.重启docker查看是否成功
重载docker配置 systemctl daemon-reload
重启docker服务systemctl restart docker
查看docker信息确认仓库是否添加docker info
5.向私服推送拉取镜像
将本地cc8775c0fe94镜像打一个标签
docker tag cc8775c0fe94 myregistry:5000/mysql:5.7.32
推送到私服
docker push myregistry:5000/mysql:5.7.32
其它节点就可以从私服拉取该镜像
docker pull myregistry:5000/mysql:5.7.32
至此私服搭建成功
6.以stack方式搭建私服
上面的部署方式是部署成一个服务,如果想要部署到stack,可以把容器删除,然后编辑一个registry.yml文件
version: '3.7'
services:
registry:
image: registry:2
ports:
- 5000:5000
volumes:
- /storage/registry:/var/lib/registry
networks:
- default
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
default:
然后执行
docker stack deploy --with-registry-auth --compose-file registry.yml registry
docker stack ls查看