本投稿は、﹁Multi-Host Docker Networking is now ready for production﹂の参考日本語訳です。
■ プロダクションに対応するマルチホスト Docker ネットワーク機能
6月の DockerCon では、Docker ネットワークの実験的なサポートを真っ先に紹介しました。Docker 1.9 では、ネットワーキングはプロダクションにおける利用準備が整い、Swarm と Compose とも動くことをアナウンスできるので、私達は嬉しく思います。 ネットワーキング(networking)は Docker エンジンの機能です。アプリケーションに対して仮想ネットワークを作成し、コンテナに作成したネットワーク・トポロジを取り付ける︵attach︶機能を持ちます。ネットワークに対応したコンテナは、複数のホストにまたがるだけではありません。どのホスト上でコンテナを実行するか、それを考える必要もありません。どこにいてもシームレスに通信できます。すなわち、本当の分散アプリケーションを実現します。 ネットワーク機能は取り外し可能︵pluggable︶です。そのため、アプリケーションに変更を加えずに、ネットワークにサードパーティ製のネットワーキング・ドライバを使えます。こちらに利用可能なプラグインの一覧があります。私達のパートナーである、Weave、プロジェクト Calico、VMware、Cisco、Midokura によるプラグインが利用可能なことをご確認ください。■ ネットワーキングVSリンク
私達は何人もの利用者がリンク機能(link)のシンプルが好きだと知っていますし、﹁docker0﹂ネットワークにおいては、まだ使うことができます。しかし、ネットワーキング機能にはリンクにはできない以下のことができるので、ネットワーキング機能を試すことをお勧めします。 1. 異なった物理・仮想ホストにまたがるコンテナを相互に接続 2. コンテナはネットワーク機能を、他のコンテナとの通信を途絶せず、簡単に停止・開始・再起動 3. リンクする前にコンテナを作成しておく必用がありません。ネットワーク化されたコンテナを作成しておけば、コンテナ名を使って相互に認識できます。■ ネットワーキングを使う
ネットワーク機能は Swarm と Compose を連携して使えます。ここでは使い方について概要を紹介します。■ 単一ホスト
新しい﹁docker network﹂コマンドを使うことで、ネットワーク機能をすぐに使い始められます。 新しいネットワークを﹁docker network create﹂コマンドで作成できます。次の例では﹁frontend﹂と呼ばれるネットワークを作成し、中で nginx コンテナを実行します。$ docker network create frontend $ docker run -itd --net=frontend --name web nginxネットワークはアプリケーションの分離だけでなく、個々のアプリケーションの分離にも使えます。次の例は、﹁app﹂という名称のネットワークでウェブ・アプリケーションを実行しようとしています。﹁docker network connect﹂コマンドを使うことで、先ほどの Nginx コンテナに接続を転送します。
$ docker network create app $ docker run -itd --name myapp --net=app <my application container> $ docker network connect app webこれで Nginx はホスト名﹁myapp.app﹂を使ってアプリケーションに接続できるようになります。