更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 在Ubuntu 22.04上安装和配置Docker Swarm的步骤

在Ubuntu 22.04上安装和配置Docker Swarm的步骤

更新时间:2022-12-29 10:19:36浏览次数:822+次

本文介绍如何在Ubuntu 22.04系统上安装和配置Docker Swarm的详细步骤。Docker swarm是一个用于创建Docker主机集群的工具,通过docker swarm,我们可以创建一个高可用性和高性能集群,应用程序分布在主机之间,Docker swarm由管理器和工作节点组成,操作由管理器执行。

在Ubuntu 22.04操作系统上安装和配置Docker Swarm的步骤

步骤1:准备节点

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

sudo vim /etc/hosts

将以下内容添加到文件中:

192.168.1.10 manager.example.com manager

192.168.1.11 worker-01.example.com worker-01

192.168.1.12 worker-02.example.com worker-02

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

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

我们将在主机上安装Docker CE。要在Ubuntu 22.04上安装Docker CE,请执行以下步骤:

使用以下命令安装依赖程序包:

sudo apt update

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

添加docker键:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg

使用以下命令将docker存储库添加到主机:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

更新程序包:

sudo apt update

确保您要从官方Docker repo安装,而不是默认的Ubuntu repo:

$ apt-cache policy docker-ce

docker-ce:

  Installed: (none)

  Candidate: 5:20.10.17~3-0~ubuntu-jammy

  Version table:

     5:20.10.17~3-0~ubuntu-jammy 500

        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

     5:20.10.16~3-0~ubuntu-jammy 500

        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

     5:20.10.15~3-0~ubuntu-jammy 500

        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

     5:20.10.14~3-0~ubuntu-jammy 500

        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

     5:20.10.13~3-0~ubuntu-jammy 500

        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

在Ubuntu 22.04上安装Docker CE:

sudo apt install docker-ce

安装后,Docker守护程序应启动。通过运行以下命令确认状态:

$ systemctl status docker

 docker.service - Docker Application Container Engine 

    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) 

    Active: active (running)

将用户添加到Docker组,以避免每次运行Docker命令时键入sudo:

sudo usermod -aG docker ${USER}

newgrp docker

步骤3:在Ubuntu 22.04上创建Docker Swarm群集

要建立集群,我们首先需要在管理器节点上初始化Docker swarm模式,然后将工作节点添加到集群中。

获取接口IP地址:

# Get active primary interface name

$ ip address

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

    link/ether 52:54:00:13:e7:d6 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.10/24 brd 192.168.200.255 scope global dynamic noprefixroute enp1s0

       valid_lft 3578sec preferred_lft 3578sec

    inet6 fe80::bfeb:53e3:8760:78ee/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default

    link/ether 02:42:e8:4e:10:c8 brd ff:ff:ff:ff:ff:ff

    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

       valid_lft forever preferred_lft forever

对我来说,Docker管理器将在其上发布的接口是enp1s0:

INT_NAME="enp1s0" #replace accordingly

HOST_IP=$(ip addr show $INT_NAME | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)

确认IP地址已正确保存:

$ echo $HOST_IP

192.168.1.10

运行以下命令在管理器上初始化Docker swarm节点:

$ sudo docker swarm init --advertise-addr $HOST_IP

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.

步骤4:将工作节点加入群集

现在,我们将使用集群“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

\

步骤5:在集群中部署应用程序

让我们创建一个服务NginxWeb服务器,在默认的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

\

步骤6:复制和扩展服务

我们将制作web服务器服务的3个副本,以便它可以在管理器和两个工作节点上访问:

$ 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

\

使用所有节点IP从浏览器访问服务:http://192.168.1.10:8080, http://192.168.1.11:8080和http://192.168.1.12:8080,应该会得到一个nginx欢迎页面,如下所示:

\

至此,在Ubuntu 22.04系统上安装和配置Docker Swarm完成。