開発者ドキュメント

Ubuntu16.04にDockerComposeをインストールする方法

序章

Docker は、ソフトウェアコンテナー内でのLinuxアプリケーションのデプロイを自動化するための優れたツールですが、その可能性を最大限に活用するには、アプリケーションの各コンポーネントを独自のコンテナーで実行する必要があります。 多くのコンポーネントを含む複雑なアプリケーションの場合、すべてのコンテナーを調整して、起動、通信、およびシャットダウンを一緒に行うと、すぐに扱いにくくなる可能性があります。

Dockerコミュニティは、 Fig と呼ばれる人気のあるソリューションを考案しました。これにより、単一のYAMLファイルを使用してすべてのDockerコンテナーと構成を調整できます。 これは非常に人気があったため、DockerチームはFigソースに基づいて DockerComposeを作成することを決定しました。これは現在非推奨です。 Docker Composeを使用すると、ユーザーは、コンテナー内のリンクとボリュームの起動、シャットダウン、セットアップなど、Dockerコンテナーのプロセスを簡単に調整できます。

このチュートリアルでは、マルチコンテナーアプリケーションの管理に役立つ最新バージョンのDockerComposeをインストールする方法を示します。

前提条件

この記事をフォローするには、次のUbuntu16.04サーバーが必要です。

これらが配置されたら、フォローする準備ができています。

注:前提条件にUbuntu 16.04にDockerをインストールする手順が記載されていますが、この記事のdockerコマンドは、Dockerがインストールされている限り他のオペレーティングシステムでも機能します。

ステップ1—DockerComposeをインストールする

公式のUbuntuリポジトリからDockerComposeをインストールできますが、最新リリースよりもいくつかのマイナーバージョンであるため、DockerのGitHubリポジトリからDockerComposeをインストールします。 以下のコマンドは、リリースページにあるコマンドとは少し異なります。 -oフラグを使用して、出力をリダイレクトするのではなく、最初に出力ファイルを指定することにより、この構文は、sudoの使用時に発生する許可拒否エラーに遭遇することを回避します。

現在のリリースを確認し、必要に応じて、以下のコマンドで更新します。

  1. sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

次に、権限を設定します。

  1. sudo chmod +x /usr/local/bin/docker-compose

次に、バージョンを確認して、インストールが成功したことを確認します。

  1. docker-compose --version

これにより、インストールしたバージョンが出力されます。

Output
docker-compose version 1.18.0, build 8dd22a9

Docker Composeがインストールされたので、「HelloWorld」の例を実行する準備が整いました。

ステップ2—DockerComposeを使用してコンテナーを実行する

パブリックDockerレジストリであるDockerHubには、デモンストレーションとテスト用の HelloWorldイメージが含まれています。 これは、DockerComposeを使用してコンテナーを実行するために必要な最小限の構成を示しています。単一のイメージを呼び出すYAMLファイルです。

まず、YAMLファイルのディレクトリを作成し、そこに移動します。

  1. mkdir hello-world
  2. cd hello-world

次に、YAMLファイルを作成します。

  1. nano docker-compose.yml

次の内容をファイルに入れ、ファイルを保存して、テキストエディタを終了します。

docker-compose.yml
my-test:
 image: hello-world

YAMLファイルの最初の行は、コンテナー名の一部として使用されます。 2行目は、コンテナの作成に使用するイメージを指定します。 コマンドdocker-compose upを実行すると、指定した名前hello-worldでローカルイメージが検索されます。 これが整ったら、ファイルを保存して終了します。

docker imagesコマンドを使用して、システム上の画像を手動で確認できます。

  1. docker images

ローカル画像がまったくない場合は、列見出しのみが表示されます。

Output
REPOSITORY TAG IMAGE ID CREATED SIZE

ここで、~/hello-worldディレクトリにいる間に、次のコマンドを実行します。

  1. docker-compose up

コマンドを初めて実行するときに、hello-worldという名前のローカルイメージがない場合、DockerComposeはDockerHubパブリックリポジトリからコマンドをプルします。

Output
Pulling my-test (hello-world:latest)... latest: Pulling from library/hello-world c04b14da8d14: Downloading [==================================================>] c04b14da8d14: Extracting [==================================================>] c04b14da8d14: Extracting [==================================================>] c04b14da8d14: Pull complete Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9 Status: Downloaded newer image for hello-world:latest . . .

イメージをプルした後、docker-composeはコンテナーを作成し、接続して hello プログラムを実行します。これにより、インストールが機能しているように見えることが確認されます。

Output
. . . Creating helloworld_my-test_1... Attaching to helloworld_my-test_1 my-test_1 | my-test_1 | Hello from Docker. my-test_1 | This message shows that your installation appears to be working correctly. my-test_1 | . . .

次に、それが何をしたかの説明を出力します。

Output of docker-compose up
1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

Dockerコンテナーは、コマンドがアクティブである間のみ実行されるため、helloの実行が終了すると、コンテナーは停止します。 したがって、アクティブなプロセスを見ると、列ヘッダーは表示されますが、hello-worldコンテナーは実行されていないため、リストされません。

  1. docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

-aフラグを使用すると、アクティブなコンテナーだけでなく、すべてのコンテナーを表示することで、次のステップで必要になるコンテナー情報を確認できます。

  1. docker ps -a
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06069fd5ca23 hello-world "/hello" 35 minutes ago Exited (0) 35 minutes ago drunk_payne

これにより、コンテナを使い終わったときにコンテナを削除するために必要な情報が表示されます。

手順3—画像の削除(オプション)

不要なディスク領域を使用しないように、ローカルイメージを削除します。 そのためには、docker rmコマンドに続けて、CONTAINER IDまたはNAMEのいずれかを使用して、イメージを参照するすべてのコンテナーを削除する必要があります。 以下では、実行したdocker ps -aコマンドのCONTAINERIDを使用しています。 必ずコンテナのIDに置き換えてください。

  1. docker rm 06069fd5ca23

画像を参照するすべてのコンテナが削除されたら、画像を削除できます。

  1. docker rmi hello-world

結論

これで、Docker Composeをインストールし、Hello Worldの例を実行してインストールをテストし、テストイメージとコンテナーを削除しました。

Hello Worldの例ではインストールが確認されていますが、単純な構成では、DockerComposeの主な利点の1つは示されていません。Dockerコンテナーのグループを同時に上下させることができます。 Docker Composeの実際の動作を確認するには、この実用的な例Ubuntu16.04でDockerとDockerComposeを使用して継続的インテグレーションテスト環境を構成する方法を確認してください。

モバイルバージョンを終了