安装 Docker swarm 集群管理工具 Portainer


1、安装 Docker CE

1)卸载老版本 Docker

$ docker stop $(docker ps -q)
$ docker rm $(docker ps -aq)
$ sudo yum -y remove docker docker-common docker-selinux docker-engine docker-engine-selinux container-selinux docker-ce docker-ce-cli

2)安装 Docker CE

$ yum install -y yum-utils device-mapper-persistent-data lvm2
$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ yum list docker-ce --showduplicates | sort -r
$ yum -y install docker-ce
$ docker -v
$ systemctl start docker
$ systemctl status docker
$ systemctl enable docker

2、安装 swarm

docker pull swarm

3、创建集群

注意:将 10.0.0.10 替换成真实的服务器 IP。

$ docker swarm init --advertise-addr 10.0.0.10
Swarm initialized: current node (mvm8i7yaj4qif4t2r4rix5165) is now a manager.

To add a worker to this swarm, run the following command:

docker swarm join --token SWMTKN-1-27low1oru0v4j6txg49dwb39pup9kvfu31lusa7mxjafmwlasg-dy6jkk6qowy3vltgacjlsd6t0 10.0.0.10:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

4、向集群里添加节点

上一步中初始化集群命令的返回信息中有一个命令是用来添加 worker 节点的:

docker swarm join --token SWMTKN-1-27low1oru0v4j6txg49dwb39pup9kvfu31lusa7mxjafmwlasg-dy6jkk6qowy3vltgacjlsd6t0 10.0.0.10:2377

如果忘记了,可以执行查看命令,查看添加节点的命令内容。

查看加入集群 manager 管理节点的命令:

$ docker swarm join-token manager

查看加入集群 worker 节点的命令:

$ docker swarm join-token worker

注意:添加节点的命令“docker swarm join …”在节点所在的主机上运行,查看命令 “docker swarm join-token …”在 manager 节点上执行。

5、创建 overlay 网络

要使用服务发现,需要相互通信的 service 必须属于同一个 overlay 网络。默认的 inspect 网络也是 overlay 类型,但并没有提供服务发现的功能,所以要重新创建一个新的 overlay 网络。

docker network create --driver overlay services_net

6、安装 Portainer

docker service create \
--name portainer \
--network services_net \
--publish 9000:9000 \
--constraint 'node.role == manager' \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=bind,src=/mydata/data/portainer,dst=rancher \
portainer/portainer \
-H unix:///var/run/docker.sock

注意:/mydata/data/portainer 是本地映射到 portainer 数据目录的地址,需要事先创建好目录。这个地址可以根据需要来修改。

7、Nginx 配置

其中 location /api/websocket/ 部分的配置用于解决运行控制台报“timeout waiting for exec session ready”错误的问题。

server {
    listen       80;
    server_name  dockers.mysite.com;

    charset utf-8;

    access_log  logs/dockers.mysite.com.access.log  main;


    location / {
        proxy_set_header Host $host;
        proxy_set_header X_Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://portainer:9000;
    }

    location /api/websocket/ {
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_pass http://portainer:9000/api/websocket/;
    }
}

8、附录

1)进入 Endpoint 报“Unable to connect to the Docker environment”问题

这个可能是浏览器状态的问题,清除浏览器缓存,或者换个浏览器试试。

2)其他安装方式

可以使用 stack 方式进行安装。stack 方式会同时安装 portainer agent 和 portainer 两个服务。portainer 通过 agent 来连接 Docker 集群。


前一篇:
后一篇:

发表评论