Docker · 3 min read · Nov 10, 2025
CentOS 8にDocker Swarmクラスターをインストールして構成する方法

Dockerは、コンテナを使用してアプリケーションを作成、展開、実行するために使用できるオープンソースツールです。コンテナは、アプリケーションを必要なすべての依存関係と共にパッケージ化し、単一のパッケージとして出荷することを可能にします。
Docker Swarmは、Dockerホストを管理するために使用されるクラスタリングツールです。これにより、Dockerホストのグループを単一の論理的な仮想サーバーにすることができます。この方法で、アプリケーションを水平にスケールし、コンテナインスタンスの数を増やすことができます。Docker Swarmは、コンテナの自己修復、負荷分散、コンテナのスケールアップおよびスケールダウン、サービスディスカバリー、ローリングアップデートなど、非常に便利な機能を提供します。
この記事では、CentOS 8にDocker Swarmクラスターを設定する方法を示します。
前提条件
- CentOS 8を実行している2台のサーバー。
- 各サーバーにルートパスワードが設定されています。
両方のノードにDockerをインストールする
まず、両方のノードにDockerをインストールする必要があります。デフォルトでは、CentOS 8のデフォルトリポジトリには最新のDockerバージョンは含まれていません。したがって、システムにDockerリポジトリを追加する必要があります。
次のコマンドで追加できます:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repoDockerリポジトリが作成されたら、次のコマンドでDockerをインストールします:
dnf install docker-ce --nobestDockerをインストールした後、次のコマンドでDockerサービスを開始し、システム再起動時に自動的に開始するように設定します:
systemctl start docker
systemctl enable docker次のコマンドでDockerのステータスを確認することもできます:
systemctl status docker次の出力が得られるはずです:
? docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2021-03-12 03:55:24 EST; 6s ago
Docs: https://docs.docker.com
Main PID: 2173 (dockerd)
Tasks: 8
Memory: 44.7M
CGroup: /system.slice/docker.service
??2173 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.570387991-05:00" level=error msg="Failed to built-in GetDriver graph btrfs>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617049696-05:00" level=warning msg="Your kernel does not support cgroup bl>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617096273-05:00" level=warning msg="Your kernel does not support cgroup bl>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617278059-05:00" level=info msg="Loading containers: start."
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.884953789-05:00" level=info msg="Default bridge (docker0) is assigned with>
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.039811428-05:00" level=info msg="Loading containers: done."
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.066358016-05:00" level=info msg="Docker daemon" commit=363e9a8 graphdriver>
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.066498611-05:00" level=info msg="Daemon has completed initialization"
Mar 12 03:55:24 workernode systemd[1]: Started Docker Application Container Engine.
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.119523516-05:00" level=info msg="API listen on /var/run/docker.sock"
次に、次のコマンドを使用してインストールされたDockerのバージョンを確認します:
docker --version次の出力が表示されるはずです:
Docker version 20.10.5, build 55c4c88
ファイアウォールを構成する
次に、両方のノードでファイアウォールを通過させるために、ポート2376、2377、7946、および80を許可する必要があります。次のコマンドで許可できます:
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=2377/tcp
firewall-cmd --permanent --add-port=7946/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=7946/udp
firewall-cmd --permanent --add-port=4789/udp次に、変更を適用するためにfirewalldを再読み込みします:
firewall-cmd --reloadDocker Swarmクラスターを初期化する
次に、マネージャーノードでDocker Swarmクラスターを初期化する必要があります。次のコマンドで実行できます:
docker swarm init --advertise-addr 45.58.32.185次の出力が得られるはずです:
Swarm initialized: current node (cq8xpscsls2ctqhdha8lhdrph) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
上記の出力に示されたコマンドをDockerワーカーノードで使用して、ノードをクラスターに参加させることができます。
次のコマンドでDocker Swarmクラスターの情報を確認できます:
docker info次の出力が得られるはずです:
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.5
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: active
NodeID: cq8xpscsls2ctqhdha8lhdrph
Is Manager: true
ClusterID: m7jrgvuw1k7pvfd1qyc3mffpl
Managers: 1
Nodes: 1
Default Address Pool: 10.0.0.0/8
SubnetSize: 24
Data Path Port: 4789
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 10
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Force Rotate: 0
Autolock Managers: false
Root Rotation In Progress: false
Node Address: 45.58.32.185
Manager Addresses:
45.58.32.185:2377
次のコマンドでDocker Swarmノードを確認できます:
docker node ls次の出力が得られるはずです:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
cq8xpscsls2ctqhdha8lhdrph * masternode Ready Active Leader 20.10.5
Docker Swarmクラスターにワーカーノードを追加する
次に、ワーカーノードをDocker Swarmマネージャーノードに追加する必要があります。ワーカーノードで次のコマンドを実行できます:
docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377次の出力が得られるはずです:
This node joined a swarm as a worker.
Dockerマネージャーノードで次のコマンドを実行してワーカーノードを確認します:
docker node lsワーカーノードがDocker Swarmに追加されていることが確認できます:
cq8xpscsls2ctqhdha8lhdrph * masternode Ready Active Leader 20.10.5
bipfv8sfm94a9po0uame5rd1n workernode Ready Active 20.10.5
Docker Swarmでサービスを起動する
ここでは、新しいNginxウェブサービスを作成し、2つのコンテナでスケールします。マネージャーノードで次のコマンドを実行して作成できます:
docker service create -p 80:80 --name webservice --replicas 2 nginx次の出力が得られるはずです:
agyxlaswxakrbboakkyydsh0k
overall progress: 2 out of 2 tasks
1/2: running [==================================================>]
2/2: running [==================================================>]
verify: Service converged
次のコマンドでウェブサービスを確認できます:
docker service ls次の出力が得られるはずです:
ID NAME MODE REPLICAS IMAGE PORTS
agyxlaswxakr webservice replicated 2/2 nginx:latest *:80->80/tcp
次のコマンドで実行中のコンテナを確認できます:
docker ps次の出力が得られるはずです:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c887cad1df2e nginx:latest "/docker-entrypoint.…" 32 seconds ago Up 30 seconds 80/tcp webservice.2.jelyj9gmeb7ikl2scg7mz8yg8
ウェブサービスの詳細情報を取得するには、次のコマンドを実行します:
docker service ps webservice次の出力が得られるはずです:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
eye9zukwwrkq webservice.1 nginx:latest workernode Running Running 3 minutes ago
jelyj9gmeb7i webservice.2 nginx:latest masternode Running Running 3 minutes ago
Docker Swarmを確認する
この時点で、管理ノードを含むクラスターのノード全体にNginxコンテナをデプロイしました。ワーカーノードまたはマネージャーノードのIPアドレスを使用して、Nginxウェブサーバーにアクセスできます:

結論
上記のガイドでは、CentOS 8でDocker Swarmクラスターを設定する方法を学びました。これで、Docker Swarmクラスターに任意の数のワーカーノードを追加し、アプリケーションをスケールできます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。