本投稿は、「Announcing Docker 1.9: Production-ready Swarm and Multi-host Networking」の参考日本語訳です。
■ Docker 1.9 発表:Swarm とマルチホスト・ネットワーキングのプロダクション対応
今日、私達は Docker 1.0 を発表します。これはとても大きなものです。Docker Swarm とマルチホスト・ネットワーキングはプロダクション(訳注;実サービス・本番向けの意味)対応となりました。Docker Engine は新しいボリューム管理システムを持ち、Docker Compose は複数の環境をよりよくサポートします。これはアプリケーションをプロダクションでスケールするための基礎を構成するものです。
コンテナ化は、インフラの構築のしかたを変えつつあり、作業にあたっては正しいツールを使う必要があります。Docker Swarm はアプリケーションを配信して実行するために、インフラを1つのリソース・プールに変えます。しかし、これらアプリケーションの一部である全てのコンテナを、なんとか管理する必要があります。そして、データをどこかに保管しておく必要もあるでしょう。コンテナの世界、つまりインフラのあらゆるホスト上の実行環境において、管理することは非常に難しいものです。
言うまでもありませんが、私達は既にこれをカバーしています。Docker ネットワーキングはホスト下にまたがる仮想ネットワークを作成します。そのため、どのホストにコンテナがいようとも、お互いが通信可能になります。Docker エンジン(訳者注:docker デーモンのこと)の新しい管理システムにより、コンテナがどこにあろうとも、一貫性のあるデータを保管できます。これらの基礎の上に、Compose を使って重要な部分、つまりアプリケーションを実行できます。
■ マルチホスト・ネットワーキング(Mult-host Networking)
6月に開催した DockerCon では、ネットワーク機能は実験的リリースの一部でした。Docker エンジンにおいて、ネットワーク機能が安定リリース(stable release)になり、プロダクションで利用可能であると発表できることを嬉しく思います。
ネットワーク機能は Docker エンジンを使い、複数のホストにまたがる仮想ネットワークを作成できます。コンテナはこれらのネットワークのどこでも接続できます。そして、ネットワークのトポロジ(接続形態)を越えて、どのコンテナがどこと通信するのかを、完全に管理できます。それだけではありません。システムの原動力となるネットワークはプラグインによって入れ替え可能です。これにより、アプリケーションを変更しなくても、あらゆるネットワーク・システムを統合することができます。
詳細はネットワーク機能に関するブログ投稿(リンク先は参考和訳)をお読みください。また、ネットワーク機能に特化したオンライン・ミートアップも開催します。開発エンジニアによる発表が聞けるものです。
■永続的なストレージ(Persistent Storage)
私達は皆さんから、配信したアプリ上で永続的にデータを保管するのに苦労していると、何度も何度も伺っていました。Docker 1.8 から含まれるボリューム・プラグインにより、何らかのサード・パーティ製のストレージ・システムで Docker ボリュームを扱えるようになりました。
私達はこれを更に良いものにしました。Docker エンジン 1.9 ではボリューム・システムを全て再設計しました。これにより、最前線でプラグインを使うのを、より簡単にしました。Swarm と連携することで、クラスタ全体における永続的なストレージを管理します。
以下は Flocker プラグインの使い方です:
$ docker volume create -d flocker --name=myvolume $ docker run -v myvolume:/data busybox sh -c "echo hello > /data/file.txt" $ docker run -v myvolume:/data busybox sh -c "cat /data/file.txt"
ほかにも Blockbridge、Ceph、ClusterHQ、EMC、Portworx といったドライバが利用可能です。詳細はボリュームのドキュメントや、ボリューム・プラグインのドキュメントをご覧ください。
■ Docker Swarm 1.0
Docker Swarm は Docker エンジンに対応したクラスタリングです。今回のリリースは私達が本気で取り組んだものであり、スケールのテストやバグ潰し、最適化、より強固なものにしてきました。今回のリリースにおける新しいネットワーク機能とボリュームによって、私達は自信を持って述べます。プロダクションにおけるアプリケーションで Docker Swarm が利用可能であると。私達は既に 1,000 ノードで 30,000 コンテナをスケールするテストを行っており、そこでは、汗をかくことすらありませんでした。
詳細はこちらのブログ投稿(リンク先は参考訳)をお読みいただくか、オンライン・ミートアップで詳細を学びましょう。
■ Docker エンジン 1.9
ネットワーク機能とボリューム管理に加え、1.9 リリースでは他にも一連の機能を追加しました:
- Dockerfile 構築時の引数:Dockerfile で引数を定義できるようになりました。引数により「docker build」でイメージをどのように構築するのか、カスタマイズに使えます。例えば、バージョンの依存関係を調整するため「HTTP_PROXY」を設定することがあるでしょう。
- イメージの並列取得:イメージの取得時、取得プロセスが既に進行している場合、画面に適切な表示を行い、コマンドも正常に処理して終了します(「このレイヤは既に他のクライアントによって使用中です」(Layer already being pulled by another client)と表示され、立ち往生することはありません!)。
- 停止シグナルの設定:Dockerfileの「STOPSIGNAL」命令によって、「docker stop」実行時の停止シグナルをカスタマイズできます。
- AWS CloudWath ロギング・ドライバ:AWS を使っているのであれば、コンテナのログを CloudWatch に直接送れます。
- ディスク I/O メトリクス:`docker stats` でディスク・メトリクスを表示します。
完全な変更一覧はリリース・ノートをご確認ください。今回のリリースに関わった全ての方に大きな感謝をしています。Madhav Puri さんによる構築時の引数に関して、Darren Shepard さん、Patric Hemmer さん、Haraid Alberts さんにはテスト、レビューなどリリース全般に関する助力をいただきました。
また、近日開催のウェビナーもご確認ください。永続的なストレージ、データ、Docker についてです。新しいボリューム管理の使い方を学びます。今日から登録できます。
■ Docker Compose 1.5
Docker Compose は複数のコンテナ・アプリケーションの定義と実行のためのツールです。以下は更新情報です。
- Windows サポート:Compose は Windows 上でも実行できるようになり、Windows 版 Docker Toolbox に含まれています。これにより、開発環境が Mac でも Windows で実行できるようになり、その逆(訳者注:Windows で開発し、Mac で実行)も可能になります。
- Compose ファイルにおける環境変数:Compose ファイルの設定で、実行時に使う環境変数を定義できるようになりました。
- より優れた複数環境のサポート:1つのベース・ファイルを元にし、アプリケーション構造の記述、上書きが可能になりました。ファイルの違いにより、開発環境、テスト、プロダクションなどの環境を指定します。使い方についてはこちらのドキュメント(英語)をお読みください。
- ネットワーク機能の統合:今回のリリースで Docker の新しいネットワーク機能を実験的にサポートしました。そのため、Compose を使ってアプリケーションを Swarm にデプロイするとき、複数のホストにわたって動作できます。詳細についてはこちらをお読みください(英語)。
- Compose ファイル検証:Compose は Compose 用ファイルが適切が確認し、何か問題があれば、より詳しいエラーメッセージを表示します。
変更箇所の詳細については、リリースノート(英語)をお読みください。そして、Docker Toolbox をダウンロードし、試しましょう。
■ Docker Toolbox
Mac や Windows の開発環境でこれら新機能を試すには、Docker Toolbox のダウンロードです。この中にこれまで取り上げた全ての最新バージョンが1つにまとまっている便利なインストーラーです。入手して試しましょう!
Machine 0.5 には Docker エンジンを PC 上やクラウド・プロバイダ上に作るツールも含まれています。Machine は取り付け可能な(pluggable)ドライバになりました(訳者注:ドライバは本体リリースと切り離し、各々が Machine に対するプラグインとして扱うことも)。そのため、Docker コンテナを実行したいクラウドまたは仮想化プロバイダが対応していなかった場合は、自分でドライバを書くことができます。詳細についてはリリースノートをお読みください。
これら便利な機能をすべて使い、かつ、多くのバグを修正した Mac 版・Windows 版の Docker Toolbox は今日からダウンロードできます。
■ Docker Registry 2.2
最新リリースの変更点は以下の通りです:
- Google Cloud Storage のサポート:Google のレイヤやマニュフェストに保管できます。
- 読み込み専用モード:安全ではない管理作業時も利用可能にしたい場合、Registry を読み込み専用モードとして動作させることができ、ユーザは送信(push)できなくします。
- ホスト名の設定サポート:レジストリに対すして外部から到達可能な URL を指定できます。
- ファイル存在と HTTP ヘルス・チェックの設定:管理システムは、ファイルシステム上にファイルを置くことで、一時的にレポジトリを無効化できます。レジストリは通知エンドポイントのような他のサービスのヘルス・チェックを設定可能です。
- HTTP レスポンス・ヘッダの設定:HTTP ヘッダの設定が可能になります。レジストリを環境に応じてカスタマイズし、セキュリティの改善を施した応答をさせたりします。
全ての一覧に関してはリリース・ノートをご確認ください。最新版の Docker レジストリは今日からお試しいただけます。
—- ここまで —-
■ あわせてこちらもどうぞ
【参考訳】 プロダクションに対応するマルチホスト Docker ネットワーク機能
【参考訳】 Swarm 1.0 発表:スケールするクラスタリングがプロダクション対応
■ 原文
Announcing Docker 1.9: Production-ready Swarm and Multi-host Networking | Docker Blog
http://blog.docker.com/2015/11/docker-1-9-production-ready-swarm-multi-host-networking/