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 ベースのソフトウェア・ツールで扱えません。
関連情報¶
- Docker Hub 上の Docker Swarm 公式イメージ リポジトリ
- Docker Machine で Swarm クラスタ構築
参考
- How to get Docker Swarm
- https://docs.docker.com/swarm/get-swarm/