[ Docker](https://docs.docker.com/)は、Linuxアプリケーションをソフトウェアコンテナに自動的にデプロイするための優れたツールですが、その可能性を最大限に活用するには、アプリケーションの各コンポーネントが独自のものである必要があります別のコンテナで実行します。多数のコンポーネントを含む複雑なアプリケーションの場合、すべてのコンテナを調整して開始すると、通信とシャットダウンの処理がすぐに困難になる可能性があります。
Dockerコミュニティは、[Fig](http://www.fig.sh/)と呼ばれる一般的なソリューションを提案しました。これにより、単一のYAMLファイルを使用してすべてのDockerコンテナーと構成を調整できます。これは非常に人気があったため、DockerチームはFigソースに基づいて* Docker Compose *を作成することを決定しましたが、現在は非推奨です。 Docker Composeを使用すると、ユーザーは、コンテナー内のリンクとボリュームの開始、終了、設定など、Dockerコンテナーのプロセスを簡単に調整できます。
このチュートリアルでは、マルチコンテナアプリケーションの管理に役立つ最新バージョンのDockerComposeをインストールする方法を示します。
この記事を読むには、次のUbuntu18.04サーバーが必要です。
sudo
コマンドを使用できる非rootアカウントを持つUbuntu サーバーがセットアップされ、ファイアウォールがオンになっています。サーバーをお持ちでない方は[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs?from=10680)を使って実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。これらが整ったら、いつでもフォローアップできます。
**注:**前提条件はUbuntu 18.04にDockerをインストールするための手順を提供しますが、Dockerがインストールされている限り、この記事の docker
コマンドは他のオペレーティングシステムで実行できます。
Docker Composeは公式のUbuntuリポジトリからインストールできますが、最新バージョンよりもマイナーなバージョンがいくつかあるため、DockerのGitHubリポジトリからDockerComposeをインストールします。以下のコマンドは、「[バージョン」](https://github.com/docker/compose/releases)ページにあるコマンドとは少し異なります。この構文では、出力をリダイレクトする代わりに、 -o
フラグを使用して最初に出力ファイルを指定することにより、sudoを使用するときにアクセス許可拒否エラーが発生するのを回避できます。
[現在のバージョン](https://github.com/docker/compose/releases)を確認し、必要に応じて次のコマンドで更新します。
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m`-o /usr/local/bin/docker-compose
次に、権限を設定します。
sudo chmod +x /usr/local/bin/docker-compose
次に、バージョンを確認して、インストールが成功したことを確認します。
docker-compose --version
これにより、インストールしたバージョンが出力されます。
docker-compose version 1.21.2, build a133471
Docker Composeをインストールしたので、「HelloWorld」の例を実行する準備が整いました。
パブリックDockerレジストリDockerHubには、デモンストレーションとテスト用の* Hello World *イメージが含まれています。これは、DockerComposeでコンテナを実行するために必要な最小構成を示しています。単一のイメージのYAMLファイルを呼び出します。
まず、YAMLファイル用のディレクトリを作成し、そこに移動します。
mkdir hello-world
cd hello-world
次に、YAMLファイルを作成します。
nano docker-compose.yml
以下をファイルに入れ、ファイルを保存して、テキストエディターを終了します。
my-test:
image: hello-world
YAMLファイルの最初の行は、コンテナー名の一部として使用されます。 2行目は、コンテナの作成に使用されるイメージを指定します。 docker-compose up
コマンドを実行すると、指定した名前でローカルミラー hello-world
が検索されます。これで、ファイルを保存して終了します。
次の docker images
コマンドを使用して、システム上の画像を手動で表示できます。
docker images
ローカルミラーがまったくない場合は、列見出しのみが表示されます。
REPOSITORY TAG IMAGE ID CREATED SIZE
ここで、まだ 〜/ hello-world
ディレクトリにいる間に、次のコマンドを実行します。
docker-compose up
コマンドを初めて実行するときに、ローカルイメージ hello-world
が指定されていない場合、DockerComposeはDockerHubパブリックリポジトリからコマンドを抽出します。
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](https://github.com/docker-library/hello-world/blob/85fd7ab65e079b08019032479a3f306964a28f4d/hello-world/Dockerfile)プログラムをアタッチして実行し、インストールが機能しているように見えることを確認します。
...
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 |...
次に、実行した説明を出力します。
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 newcontainerfrom 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
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-a
を使用してすべてのコンテナのフラグを表示すると、コンテナ情報を確認できます。アクティブなコンテナだけでなく、次のステップで使用します。
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06069 fd5ca23 hello-world "/hello"35 minutes ago Exited(0)35 minutes ago drunk_payne
これにより、完了時にコンテナを削除するために必要な情報が表示されます。
不要なディスク容量を使用しないように、ローカルイメージを削除します。これを行うには、 docker rm
コマンドを使用して、イメージを参照するすべてのコンテナーを削除してから、CONTAINERIDまたはNAMEを削除する必要があります。以下では、実行したばかりの docker ps-a
コマンドでCONTAINERIDを使用します。必ずコンテナのIDを置き換えてください。
docker rm 06069fd5ca23
画像を参照しているすべてのコンテナが削除されたら、画像を削除できます。
docker rmi hello-world
これで、Docker Composeをインストールし、Hello Worldの例を実行してインストールをテストし、テストイメージとコンテナを削除しました。
Hello Worldの例ではインストールが確認されましたが、単純な構成では、Docker Composeの主な利点の1つ、つまりDockerコンテナーのグループを同時に追加および削除できることは示されませんでした。
その他のUbuntuチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。
参照:「Ubuntu18.04にDockerComposeをインストールする方法」
Recommended Posts