Ubuntu 16.04にDocker Composeをインストールする方法

前書き

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

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

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

前提条件

この記事を読むには、次のものを備えたUbuntu 16.04サーバーが必要です。

これらの準備が整うと、次の手順に進むことができます。

ステップ1-Docker Composeのインストール

公式のUbuntuリポジトリからDocker Composeをインストールできますが、これは最新リリースのいくつかのマイナーバージョンであるため、DockerのGitHubリポジトリからDocker Composeをインストールします。 以下のコマンドは、https://github.com/docker/compose/releases [Releases]ページにあるコマンドとは少し異なります。 出力をリダイレクトするのではなく、最初に出力ファイルを指定するために `+ -o `フラグを使用することにより、この構文は ` sudo +`の使用時に発生する許可拒否エラーの発生を防ぎます。

https://github.com/docker/compose/releases [現在のリリース]を確認し、必要に応じて以下のコマンドで更新します。

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

次に、アクセス許可を設定します。

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

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

docker-compose --version

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

Outputdocker-compose version , build 8dd22a9

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

ステップ2-Docker Composeでコンテナーを実行する

パブリックDockerレジストリDocker Hubには、デモおよびテスト用の_Hello World_イメージが含まれています。 これは、Docker Composeを使用してコンテナーを実行するために必要な最小限の構成を示しています:単一のイメージを呼び出すYAMLファイル:

最初に、YAMLファイルのディレクトリを作成して移動します。

mkdir hello-world
cd hello-world

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

nano docker-compose.yml

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

docker-compose.yml

my-test:
image: hello-world

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

`+ docker images +`コマンドでシステム上の画像を手動で見ることができます:

docker images

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

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

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

docker-compose up

コマンドを初めて実行するときに、「+ hello-world」という名前のローカルイメージがない場合、Docker ComposeはDocker Hubパブリックリポジトリからそれを取得します。

OutputPulling 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 +`はコンテナーを作成し、アタッチし、https://github.com/docker-library/hello-world/blob/85fd7ab65e079b08019032479a3f306964a28f4d/hello-world/Dockerfile [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 up1. 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 +」コンテナは実行されていないためリストに表示されません。

docker ps
OutputCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES

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

docker ps -a
OutputCONTAINER 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 +`コマンドのCONTAINER IDを使用しています。 コンテナのIDを必ず置き換えてください:

docker rm

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

docker rmi hello-world

結論

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

Hello Worldの例ではインストールが確認されましたが、シンプルな構成ではDocker Composeの主な利点の1つは示されていません-Dockerコンテナーのグループを同時に上下させることができます。 Docker Composeの機能を実際に見るには、この実用的な例をご覧ください。https://www.digitalocean.com/community/tutorials/how-to-configure-a-continuous-integration-testing-environment- with-docker-and-docker-compose-on-ubuntu-16-04 [Ubuntu 16.04でDockerおよびDocker Composeを使用して継続的統合テスト環境を構成する方法]

前の投稿:露出を減らすことでMemcachedを保護する方法
次の投稿:Goの文字列パッケージの概要