在Ubuntu 22.04上安装和配置Docker Swarm的步骤
本文介绍如何在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完成。