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
- ルート権限
何をするか?
- ホストの構成
- Docker-ceのインストール
- Docker Swarmの初期化
- クラスターへの最初のサービスのデプロイ
ステップ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 dockerDocker-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が表示されます。

ステップ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を入力します。
そして、Nginxのデフォルトページが表示されます。
以下は’worker01’ノードからの結果です。
スワームクラスターが作成され、Nginxサービスがスワームクラスターに正常にデプロイされました。
参考
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。