1. ubuntu 16.04 三台服务器
2. 三台服务器地址及节点分配:
192.168.1.114: 管理节点
192.168.1.110:工作节点
192.168.1.124:工作节点
1) 修改主机名:
$ sudo vim /etc/hostname
2) 添加集群主机信息:
$ sudo vim /etc/host
3) Docker-CE 19.03
4) 修改docker.service 配置
不修改这个,会导致后面添加远程节点失败。
$ sudo vim /lib/systemd/system/docker.service
ExecStart 行,添加 0.0.0.0:2375
ExecStart=/usr/bin/dockerd -H fd:// -H 0.0.0.0:2375 --containerd=/run/containerd/containerd.sock
# 重启Docker 生效
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
1)下载swarm镜像:
$ docker pull swarm
2) 初始化Swarm集群
$ docker swarm init --advertise-addr 192.168.1.114
注:每个机器生成的token都不一样,要根据自己机器的生成的命令执行。如果遗失可以通过下面两个命令,分别找回manager、worker的join token
$ sudo docker swarm join-token manager
$ sudo docker swarm join-token worker
3) 添加其他节点到集群
根据上面提示,自定义选择添加管理节点,还是工作节点。
这里我在192.168.1.110,和192.168.1.124 上添加了工作节点,即 执行 $ sudo docker swarm join-token worker命令后显示的操作。
4) 查看节点状态:
$ docker node ls
1) 下载portainer镜像
$ docker pull portainer/portainer
2) 启动portainer 服务
$ docker service create \
--name portainer \
--publish 9000:9000 \
--constraint 'node.role == manager' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
portainer/portainer \
-H unix:///var/run/docker.sock
注:这种启动方式在开机后,无法自启,可采用docker run的方式,如下:
$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /path/on/host/data:/data portainer/portainer
/path/on/host/data,绑定portainer容器内的参数信息,以便后期数据再利用。
3) 添加 Portainer Agent
首先添加 Local Endpoint
4) 部署Portainer Agent
打开App Template,点击Poirtainer Agent
给stack取个名字,然后单击deploy
部署完成后,每个节点会起一个
部署Portainer Agent的另外一个途径是在任意manager节点上,执行
$ curl -L https://downloads.portainer.io/agent-stack.yml -o agent-stack.yml && docker stack deploy --compose-file=agent-stack.yml portainer-agent
5) 添加其他节点
这里以添加192.168.1.110的机器为例,Endpoint的名称以ip地址命名,然后就是要填写Endpoint URL,节点的IP地址以及Portainer Agent的端口号,即192.168.56.110:9001
所有Endpoint添加完毕
注:这里的Local也可以删掉后,用Agent来添加
这样就可以使用Portainer统一管理不同机器上的镜像和容器了。
docker swarm集群搭建及使用Portainer、shipyard
Ubuntu18.04 Swarm集群搭建