如何在Ubuntu 20.04上安装Docker Swarm

Docker swarm是用于创建Docker主机集群的工具。 Docker Swarm允许您创建高可用性和高性能集群,其中您的应用程序分布在主机之间。 Docker群由管理器节点和工作器节点组成,并且操作由管理器执行。本指南介绍了如何在Ubuntu 20.04上设置Dockerswarm集群。

步骤1:准备节点。

在我的设置中,我有一个管理器节点和两个工作器节点。在每个主机上,将hosts文件配置为包括所有其他节点。

sudo vim /etc/hosts

将以下内容添加到文件

192.168.1.10	manager
192.168.1.11	worker-01
192.168.1.12	worker-02

保存文件。 确保可以使用主机名而不是IP地址从每个主机ping通所有主机。

步骤2:在Ubuntu 20.04上安装Docker CE

在主机上安装Docker CE。请按照以下步骤在Ubuntu 20.04上安装Docker CE。

使用以下命令安装依赖包

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common

使用以下命令将Docker密钥和Docker存储库添加到主机:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

更新包

sudo apt-get update

确保从官方Docker存储库而不是默认的Ubuntu存储库安装。

$ apt-cache policy docker-ce
docker-ce: 
 Installed: (none) 
 Candidate: 5:19.03.13~3-0~ubuntu-focal 
 Version table: 
    5:19.03.13~3-0~ubuntu-focal 500 
       500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 
    5:19.03.12~3-0~ubuntu-focal 500 
       500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 
    5:19.03.11~3-0~ubuntu-focal 500 
       500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 
    5:19.03.10~3-0~ubuntu-focal 500 
       500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 
    5:19.03.9~3-0~ubuntu-focal 500 
       500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages

在Ubuntu 20.04上安装Docker CE

sudo apt install docker-ce

安装后,您需要启动Docker守护程序。执行以下命令检查状态。

$ sudo systemctl status docker
● docker.service - Docker Application Container Engine 
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) 
    Active: active (running) since Sat 2020-10-17 16:28:08 EAT; 57s ago 
TriggeredBy: ● docker.socket 
      Docs: https://docs.docker.com 
  Main PID: 2807 (dockerd) 
     Tasks: 8 
    Memory: 37.5M 
    CGroup: /system.slice/docker.service 
            └─2807 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

将用户添加到Docker组中,这样您就不必在每次运行docker命令时都键入sudo。

sudo usermod -aG docker ${USER}

步骤3:建立Docker Swarm丛集

要设置群集集群,必须首先在管理器节点上初始化Docker群集模式,然后将工作节点添加到群集。执行以下命令以初始化管理器的Dockerswarm节点。

$ sudo docker swarm init --advertise-addr 192.168.1.10

Swarm initialized: current node (fsuaqqpihi2eabmmq8gldzhpv) is now a manager. 
To add a worker to this swarm, run the following command: 
sudo docker swarm join --token SWMTKN-1-018kvdektwa74z8fajb5c1u6jyz6qfk4ood8u4qotw7go9jj0p-cfpnh7omy86xcgoh45vau2kaj 192.168.1.10:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

然后,使用集群“ manager”节点的“ join-token”将“ worker-01”和worker-02节点添加到集群“ manager”。 执行命令输出到init命令输出。

$ sudo docker swarm join --token SWMTKN-1-13xo81gxpb3ttjh5e335pfrmz9fbnliikgfys7u8l4r8k4m575-2gsjwjs3y1i4kgeua2yu840hw 192.168.1.10:2377 
This node joined a swarm as a worker.

在管理器上运行以下命令,以查看工作器节点是否已成功添加到集群中。

$ sudo docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION 
etx5xc5guzftmsqx4naqwvump     worker-02           Ready               Active                                  19.03.13 
xop4jvrkywz4ldsgwqmfacssc *   manager             Ready               Active              Leader              19.03.13 
bghrkp7ll1b9lb0ikv8x51gzy     worker-01           Ready               Active                                  19.03.13

步骤4:将应用程序部署到集群

让我们创建一个服务Nginx Web Server,它在默认的http端口80上运行并将其公开给主机端口8080。

$ sudo docker service create --name web-server --publish 8080:80 nginx:1.13-alpine
pq5txw0p9c1qcjrrl2lw3mh5p 
overall progress: 1 out of 1 tasks  
1/1: running   [==================================================>]  
verify: Service converged 

运行以下命令以查看创建的服务。

$ sudo docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
pq5txw0p9c1q        web-server          replicated          1/1                 nginx:1.13-alpine   *:8080->80/tcp

步骤5:扩展副本和服务。

创建Web服务器服务的三个副本,以便管理器和两个工作程序节点可以访问它们。

$sudo docker service scale web-server=3
web-server scaled to 3 
overall progress: 3 out of 3 tasks  
1/3: running   [==================================================>]  
2/3: running   [==================================================>]  
3/3: running   [==================================================>]  
verify: Service converged 

检查创建的服务副本

$ sudo docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS 
pq5txw0p9c1q        web-server          replicated          3/3                 nginx:1.13-alpine   *:8080->80/tcp

从使用所有节点IP(http://192.168.1.10:8080、http://192.168.1.11:8080、http://192.168.1.12:8080)的浏览器访问服务时,nginx欢迎页面显示如下。少于:

这是有关如何在Ubuntu 20.04上设置Docker Swarm的分步指南。我认为这很有用。查看下面更有趣的指南。

  • 如何使用kubeadm在Ubuntu上安装Kubernetes集群
  • 如何在CentOS 8上安装Micro K8s Kubernetes集群
  • 如何在Docker容器中运行本地Kubernetes集群
  • 在RHEL7 Linux上安装Docker CE
  • 如何将Docker / Podman容器作为系统服务运行
Sidebar