#chiroito ’s blog

Java を中心とした趣味の技術について

Getting started with swarm mode

Docker 17.06 を使用して Docker のSwarm mode を始める方法を紹介します。Swarm modeを始める事前準備、Swarm モードのクラスタを作成、クラスタへワーカーを追加、ワーカーが参加できたことを確認してみます。環境は Oracle Linux 7.4 を使用しています。 手順は以下の流れで紹介します。

Preparation for creating Swarm

Swarm を構築する前に、必要なポートへの通信を許可します。 Swarm で使用されるポートは以下のとおりです。

  • TCP:2377はクラスタマネジメントの通信
  • UDP:4789はオーバーレイ・ネットワークの通信
  • TCP:7946/UDP:7946はノード間の通信

Oracle Linux 7.4 では firewalld を使用しているため以下のように設定します。

firewall-cmd --add-port=2377/tcp
firewall-cmd --add-port=2377/tcp --permanent

firewall-cmd --add-port=4789/udp
firewall-cmd --add-port=4789/udp --permanent

firewall-cmd --add-port=7946/tcp
firewall-cmd --add-port=7946/tcp --permanent

firewall-cmd --add-port=7946/udp
firewall-cmd --add-port=7946/udp --permanent

Creating Swarm

Swarm ではマネージャとワーカーという役割があります。マネージャで Swarm を作成して、ワーカーでは作成された Swarm へ参加します。

今回は以下のホスト名および IP で構築します。

  • ホスト名:manager (IP:192.168.0.1)
  • ホスト名:worker1 (IP:192.168.0.2)

以下のコマンドでマネージャ上で Swarm を作成します。

manager> docker swarm init --advertise-addr 192.168.0.1
Swarm initialized: current node (p97k5n820ngil8hwexbi3cf6g) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-52tm0p6xhxqal3orkrdbtlx0e641f2qeieivxpuzbp35nxe961-8xrsi7x9su9f8ea23sxziiuw0 192.168.0.1:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

以下のコマンドでワーカー上で作成された Swarm へ参加します。

worker1> docker swarm join --token SWMTKN-1-52tm0p6xhxqal3orkrdbtlx0e641f2qeieivxpuzbp35nxe961-8xrsi7x9su9f8ea23sxziiuw0 192.168.0.1:2377
This node joined a swarm as a worker.

ワーカーが Swarm へ参加できたことを確認します。

manager> docker node ls
ID                            HOSTNAME     STATUS     AVAILABILITY     MANAGER STATUS
p97k5n820ngil8hwexbi3cf6g *   manager      Ready      Active           Leader
ukvti8dr7s2i5khx29mxudnig     worker1      Ready      Active

Reference

Getting started with swarm mode | Docker Documentation

Create a swarm | Docker Documentation

Add nodes to the swarm | Docker Documentation