LoginSignup
7
8

More than 5 years have passed since last update.

Docker Swarm: 開発用の Swam クラスタの作成

Posted at

開発用の Swam クラスタの作成

原文:https://docs.docker.com/swarm/install-manual/

この章では、自分のネットワーク上に Docker Swam を作成し、デバッグやテストや開発目的への使い方を紹介します。今回の構築手順は、Docker Swam 向けの何らかのアプリケーション開発や、貢献のためにも使えます。

注意:セットアップは、ファイアーウォールや他の手法により、安全にされたネットワーク環境上で行ってください。

必要条件

Docker Swarm manager という単一システムへ Docker Swarm をインストールします。そしてネットワーク上で、クラスタや Swam や追加ノードを生成します。Swam クラスタの各ノードが必要なのは:

  • Swarm Manager に自分のネットワークからアクセス可能
  • Docker エンジン 1.6.0 以上のインストール
  • Manager 向けに TCP ポートがオープン

Docker Swam を Linux の 64bit アーキテクチャで実行できます。また、64bit の Windows や Mac OS X でもインストールできますが、ベータ段階においては互換性のテストを定常的に行っていません。

使えるようになるまで、ネットワーク上でシステムが認識されるまで時間がかかります。各ノードにおいても、上記リスト項目の必要条件を確認します。

Swam イメージの取得とクラスタの作成

Swam を使い始めるのに最も簡単なのは、公式 Docker イメージ を使う方法です。

  1. Swam イメージの取得
$ docker pull swarm
  1. docker コマンドで Swarm クラスタの作成
$ docker run --rm swarm create
6856663cdefdec325839a4b7e1de38e8 # 

create コマンドを実行すると、ユニークなクラスタ ID (cluster_id) を返します。Docker Swam エージェントをノード上で起動するとき、この ID が必要になります。

Swam ノードの作成

各 Swam ノードでは Swam ノードのエージェントを実行します。エージェントは Docker デーモンや監視のために登録され、ノードの状態とディスカバリ・バックエンドを更新します。

この例では、Docker Hub ベースの token ディスカバリ・サービスを使います。各ノードにログインし、同じ作業を行います。

  1. Docker デーモンを -H フラグで起動します。Swarm エージェントの Docker リモート API が 、TCP を通して Swam Manager と通信できるようにします。
$ docker -H tcp://0.0.0.0:2375 -d
  1. ディスカバリ・サービスに Swam エージェントを登録します。このノードの IP アドレスは、Swam Manager からアクセスできる必要があります。次のコマンドを実行するときは、node_ipcluster_id を置き換えてエージェントを起動します:

docker run -d swarm join --addr= token://

実行例:

$ docker run -d swarm join --addr=172.31.40.100:2375 token://6856663cdefdec325839a4b7e1de38e8
  1. マシンや自分のノート PC 上で Swarm Manager を開始します。

次のコマンドは、どのように行うかです。

docker run -d -p <swarm_port>:2375 swarm manage token://<cluster_id>
  1. Manager を実行したあとは、次のように docker info を実行して設定情報を確認します:
docker -H tcp://<manager_ip:manager_port> info

例えば、自分のマシン上でローカルに Manager を実行すると:

$ docker -H tcp://0.0.0.0:2375 info
Containers: 0
Nodes: 3
 agent-2: 172.31.40.102:2375
    └ Containers: 0
    └ Reserved CPUs: 0 / 1
    └ Reserved Memory: 0 B / 514.5 MiB
 agent-1: 172.31.40.101:2375
    └ Containers: 0
    └ Reserved CPUs: 0 / 1
    └ Reserved Memory: 0 B / 514.5 MiB
 agent-0: 172.31.40.100:2375
    └ Containers: 0
    └ Reserved CPUs: 0 / 1
    └ Reserved Memory: 0 B / 514.5 MiB

TLS を有効にしないでテスト用のクラスタを実行しようとしても、エラーが起こります。このような場合は、環境変数 DOCKER_TLS_VERIFY を次のように無効化します:

$ unset DOCKER_TLS_VERIFY

Docker CLI を使う

通常の Docker CLI を使ってノードにアクセスできるようになります:

docker -H tcp://<manager_ip:manager_port> info
docker -H tcp://<manager_ip:manager_port> run ...
docker -H tcp://<manager_ip:manager_port> ps
docker -H tcp://<manager_ip:manager_port> logs ...

クラスタ上のノード一覧を表示

稼働中のノード全てのリストを取得するには swam list コマンドを使います:

docker run --rm swarm list token://<cluster_id>
<node_ip:2375>

実行例:

$ docker run --rm swarm list token://6856663cdefdec325839a4b7e1de38e8
172.31.40.100:2375
172.31.40.101:2375
172.31.40.102:2375

TLS

Swam は CLI と Swam 間の TLS 認証をサポートしているだけでなく、Swam と Docker ノード間でもサポートしています。しかしながら、全ての Docker デーモンと Docker ノードが同じ CA 証明書を使って認証されている必要があります

クライアントとサーバいずれも TLS を有効にするには、Docker で指定したときのように同様のコマンドライン・オプションを指定します:

swarm manage --tlsverify --tlscacert=<CACERT> --tlscert=<CERT> --tlskey=<KEY> [...]

Docker の TLS 認証設定や証明書の生成に関する詳細情報は、Docker のドキュメントを参照ください。

メモ:Swam 証明書はextendedKeyUsage = clientAuth,serverAuthを使って生成する必要があります。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8