Docker Swarm の入手方法¶
Docker Swarm クラスタを作成する方法は、 swarm
が実行可能なイメージをコンテナとして使うか、あるいは、実行可能な swarm
バイナリをシステム上にインストールします。このページは2つの方法を紹介し、それぞれの賛否を議論します。
インタラクティブなコンテナでクラスタを作成¶
クラスタの作成には、Docker Swarm 公式イメージを使えます。イメージは Docker 社が構築したものであり、適切な自動構築を通して定期的に更新しています。イメージを使うには、Docker Engine の docker run
コマンドを通してコンテナを実行します。Swarm クラスタを作成・管理するため、イメージには複数のオプションとサブコマンドがあります。
イメージを初めて使う時、Docker Engine はイメージが自分の環境に既に存在しているかどうか確認します。Docker はデフォルトで swarm:latest
バージョンを実行しますが、 latest
以外のタグも指定できます。イメージがローカルにダウンロード済みでも、Docker Hub 上に新しいバージョンが存在していれば、 Docker Engine は新しいイメージをダウンロードします。
コンテナで Swarm イメージを実行¶
Docker Engine を実行しているホスト上のターミナルを開きます。
Mac か Windows を使っている場合は、Docker Machine コマンドで Docker Engine ホストを起動し、ターミナルの環境を対象ホストに向ける必要があります。動作確認は次のようにします。
$ docker-machine ls
NAME ACTIVE URL STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v1.9.1
これは Docker Engine ホスト上で動いている default
インスタンス環境を指し示しています。
swarm
イメージを使ってコマンドを実行します。
最も簡単なコマンドはイメージのヘルプ表示です。次のコマンドはイメージで利用可能なオプションの全てを表示します。
$ docker run swarm --help
Unable to find image 'swarm:latest' locally
latest: Pulling from library/swarm
d681c900c6e3: Pull complete
188de6f24f3f: Pull complete
90b2ffb8d338: Pull complete
237af4efea94: Pull complete
3b3fc6f62107: Pull complete
7e6c9135b308: Pull complete
986340ab62f0: Pull complete
a9975e2cc0a3: Pull complete
Digest: sha256:c21fd414b0488637b1f05f13a59b032a3f9da5d818d31da1a4ca98a84c0c781b
Status: Downloaded newer image for swarm:latest
Usage: swarm [OPTIONS] COMMAND [arg...]
A Docker-native clustering system
Version: 1.0.1 (744e3a3)
Options:
--debug debug mode [$DEBUG]
--log-level, -l "info" Log level (options: debug, info, warn, error, fatal, panic)
--help, -h show help
--version, -v print the version
Commands:
create, c Create a cluster
list, l List nodes in a cluster
manage, m Manage a docker cluster
join, j join a docker cluster
help, h Shows a list of commands or help for one command
Run 'swarm COMMAND --help' for more information on a command.
この例では swarm
イメージが Engine ホスト上に存在していないため、Engine はイメージをダウンロードします。ダウンロード後、イメージは help
サブコマンドを実行し、ヘルプ・テキストを表示します。ヘルプを表示した後、 swarm
イメージが終了し、ターミナル上のコマンドラインに戻ります。
Engine ホスト上で実行しているコンテナ一覧を表示します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Swarm は動作していません。 swarm
イメージはコマンドを実行して終了したからです。
なぜイメージを使うのですか?¶
Swarm コンテナを使う方法は、他の手法と比べて3つの重要な利点があります。
イメージを使えば、システム上にバイナリのインストールが不要。
docker run
コマンドを実行するだけで、常に最新バージョンのイメージを毎回取得。コンテナはホスト環境と Swarm を分離する。シェル上のパスや環境変数の指定・調整が不要。
Swarm イメージの実行は Swarm クラスタの作成・管理のために推奨されている方法です。こちらが Docker の全ドキュメントおよびチュートリアルで使われている方法がこちらです。
Swarm バイナリの実行¶
ホストのオペレーティング・システム(OS)上で直接 Swarm バイナリを実行する前に、ソースコードからバイナリをコンパイルするか、信頼できる別の場所からコピーする必要があります。その作業の後、 Swarm のバイナリを実行します。
ソースコードから Swarm をコンパイルするには、 CONTRIBUTING.md の手順をご覧ください。
なぜバイナリを使うのですか?¶
他の方法に比べ、Swarm バイナリには利点が1つあります。もしあなたが swarm プロジェクトに貢献している開発者であれば、「コンテナ化」したバイナリを実行しなくても、コードに対する変更をテスト可能です。
ホスト OS 上で Swarm バイナリを実行する場合は、不利な点が3つあります。
ソースからコンパイルする手間。
Docker コンテナによってもたらされる隔離などの利点は、バイナリには無い。
大部分の Docker ドキュメントやチュートリアルは、バイナリで実行する方法では説明していない。
加えて、Swarm ノードは Engine を使いませんで、ノード上では Docker Engine CLI のような Docker ベースのソフトウェア・ツールで扱えません。