Docker · 1 min read · Feb 07, 2026

UbuntuでDocker Swarmクラスタをセットアップおよび構成する方法

Docker Swarmは、Dockerホストのクラスターをデプロイするためのツールです。これは、スワームクラスター内のすべてのノードにアプリケーションを分散させることによって、高可用性と高パフォーマンスを提供するDockerによって提供されるネイティブクラスタリングツールです。

このチュートリアルでは、Ubuntu 16.04を使用してスワームクラスターを作成する方法をステップバイステップで説明します。2台のUbuntuサーバーマシンを使用してスワームクラスターを作成し、1台のサーバーノードをマネージャーとして、もう1台をワーカーとして使用します。そして、スワームクラスターにシンプルなNginxサービスをデプロイしてみます。

前提条件

  • 2台以上 - Ubuntu 16.04サーバー - マネージャー 132.92.41.4
  • worker01 132.92.41.5
  • ルート権限

何をするか?

  1. ホストの構成
  2. Docker-ceのインストール
  3. Docker Swarmの初期化
  4. クラスターへの最初のサービスのデプロイ

ステップ1 - ホストの構成

スワームクラスターのためにパッケージをインストールする前に、両方のサーバーでホストファイルを構成します。

すべてのサーバー(マネージャーとworker01)で以下のコマンドを実行します。

vimエディタを使用して’/etc/hosts’ファイルを編集します。

vim /etc/hosts

以下の構成を行の最後に追加します。

132.92.41.4    manager  
132.92.41.5    worker01

保存して終了します。

次に、IPアドレスの代わりに’hostname’を使用してすべてのノードをpingします。

ping -c 3 manager  
ping -c 3 worker01

すべてのホストで動作していることを確認します。

ホストの構成

ステップ2 - Docker-ceのインストール

スワームクラスターを作成するために、すべてのサーバーノードにDockerをインストールする必要があります。このステップでは、マネージャーとworker01の両方のサーバーにDocker-ce Community Editionをインストールします。

以下のaptコマンドを使用してDocker-ceの依存関係をインストールします。

sudo apt install apt-transport-https software-properties-common ca-certificates -y

次に、DockerキーとDocker-ceリポジトリをサーバーに追加します。

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -  
sudo echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" > /etc/apt/sources.list.d/docker-ce.list

リポジトリを更新し、以下のapt installコマンドを使用してDocker-ceパッケージをインストールします。

sudo apt update  
sudo apt install docker-ce -y

インストールが完了したら、Dockerサービスを開始し、システム起動時に毎回起動するように有効にします。

systemctl start docker  
systemctl enable docker

Docker-ceは現在、サーバーノードにインストールされています。

次に、Dockerを通常のユーザーまたは非ルートユーザーとして実行するように構成します。

‘mohammad’という名前の新しいユーザーを作成し、’docker’グループに追加します。

useradd -m -s /bin/bash mohammad  
sudo usermod -aG docker mohammad

次に、’mohammad’ユーザーにログインし、以下のdocker hello-worldコマンドを実行します。

su - mohammad  
docker run hello-world

そして、以下のようにDockerからのHello Worldが表示されます。

Docker-ceのインストール

ステップ3 - スワームクラスターの作成

このステップでは、ノードのスワームクラスターを作成します。スワームクラスターのノードを作成するために、’manager’ノードでスワームモードを初期化し、次に’worker01’ノードをクラスターに参加させる必要があります。

‘管理者’ノードで以下のdockerコマンドを実行してDocker Swarmモードを初期化します。

docker swarm init --advertise-addr 132.92.41.4

そして、以下のような結果が得られます。

‘join-token’が’管理者’ノードによって生成されたことがわかります。

次に、’worker01’ノードをクラスター’管理者’に追加する必要があります。そのためには、クラスター’管理者’ノードから’join-token’が必要ですので、メモしておくことを確認してください。

‘worker01’ノードでdocker swarm joinコマンドを実行します。

docker swarm join --token SWMTKN-1-5p5ujrr67rl2rlmyvrj56fksblbcrtaeirf7fj5r4snid2vn6y-918gbqr02m64xct43i2ssi4qs 132.92.41.4:2377

今、以下のような結果が得られます。

‘worker01’ノードがクラスターに参加しました。

‘管理者’ノードで以下のコマンドを実行して確認します。

docker node ls

今、’worker01’ノードがスワームクラスターに参加したことがわかります。

スワームクラスターが作成されました。

ステップ4 - クラスターへの最初のサービスのデプロイ

このステップでは、スワームクラスターに最初のサービスを作成してデプロイします。デフォルトのHTTPポート80で実行される新しいサービスNginxウェブサーバーを作成し、ホストサーバーのポート8080に公開し、スワームクラスター内でNginxサービスを複製してみます。

サービスの作成

http://manager:8080/‘で、コンテナのHTTPポートをホストのポート8080に公開する新しいNginxサービス’my-web’を作成します。

docker service create --name my-web --publish 8080:80 nginx:1.13-alpine

作成されたら、以下のdocker serviceコマンドを使用して確認します。

docker service ls

以下のような結果が得られます。

Nginxサービスが作成され、サービス名’my-web’としてスワームクラスターにデプロイされました。これはNginx Alpine Linuxに基づいており、コンテナサービスのHTTPポートをホストのポート’8080’に公開し、レプリカは1つだけです。

レプリカとサービスのスケール

今、’my-web’サービスのレプリカを作成します。’my-web’サービスの2つのレプリカを作成し、サービスが’manager’と’worker01’ノードの両方でアクセスできるようにします。

‘my-web’サービスを複製するには、以下のコマンドを実行します。

docker service scale my-web=2

完了したら、再度docker serviceコマンドを使用して確認します。

docker service ls

そして、サーバーには2つのレプリカがあります。

レプリカとサービスのスケール

ウェブブラウザを開き、マネージャーノードのIPアドレスとポート8080を入力します。

http://manager:8080/

そして、Nginxのデフォルトページが表示されます。

以下は’worker01’ノードからの結果です。

http://worker01:8080/

スワームクラスターが作成され、Nginxサービスがスワームクラスターに正常にデプロイされました。

参考

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。