DUICUO

Dockerシリーズ:Docker-Composeの使い方を詳しく解説

今日はdocker-composeの使い方を紹介し、意見交換をしたいと思います!

1. はじめに

docker-compose は、複数の Docker コンテナを定義および管理するために Docker が提供するオープンソースのコンテナ オーケストレーション ツールです。

YML ファイルを使用してアプリケーションに必要なすべてのサービスを構成し、その後、docker-compose を使用してコマンドを実行し、YML ファイルを解析して構成し、ファイルに構成されているすべての Docker サービスを作成して起動することができます。

docker-compose は、自動化された運用・保守コマンド用のパッケージ化されたスクリプトのコレクションと考えることができます。スクリプトが正しく記述されていれば、単一のコマンドを実行するだけで、関連するすべてのサービスを起動できます。

GitHub: https://github.com/docker/compose。

2. Docker Composeの利点

運用コストの削減:高い展開効率、制御可能なコンテナの起動順序、迅速なプロジェクト移行、開発環境と本番環境間の一貫性。

典型的なシステムのデプロイメントには、Tomcat、MySQL、Redis、Nginx、MongoDBなどのアプリケーションが含まれます。コンテナ化されると、10個以上のコンテナ(小規模から中規模のプロジェクトの場合)が必要になる場合があります。各コンテナを個別に管理するのは非常に面倒で、コンテナごとに数十ものコマンドが必要になる可能性があり、効率が非常に低下します。Docker Composeを使用すると、スクリプトを事前に記述できるため、わずか数分でデプロイメントを完了できます。これにより、従来のデプロイメント方法と比較して効率が大幅に向上します。さらに、単一のスクリプトから複数のデプロイメントを実行できます。

オープンソースプロジェクトのプロモーション:オープンソースプロジェクトの作者はdocker-composeスクリプトを作成できるため、ユーザーは環境を迅速に構築し、ハードウェア条件に起因するさまざまなプロジェクトエラーを回避できます。これにより、オープンソースプロジェクトのプロモーションも促進されます。

3. 原則

docker-compose プロジェクトは Python で記述されています。基本的には、Docker サービスが提供する API を呼び出してコンテナを管理します。そのため、オペレーティングシステム プラットフォームが Docker API をサポートしていれば、Compose を使用してコンテナのオーケストレーションと管理を行うことができます。

プロセス: Dockerfile を使用してランタイム環境を定義する → docker-compose.yml を使用してアプリケーションを構成するサービスを定義する → docker-compose up を実行してアプリケーションを起動します。

4. インストールチュートリアル

(1)バイナリインストール(国内ミラー推奨)

これは公式アドレスであるため、速度が遅くなる可能性があります。国内のミラーアドレスのご利用をお勧めします。

 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

国内ミラーアドレス

 sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

検証方法

ダウンロード後、`/usr/local/bin` ディレクトリに `docker-compose` ファイルが含まれているかどうかを確認します。

 # バージョン番号を確認します。バージョン番号が表示されている場合は、インストールは成功しています。
docker-compose -バージョン

アンインストール

 sudo rm /usr/local/bin/docker-compose

(2)Python pipでインストールする

 yum -y epel-release をインストール
yum -y で python-pip をインストールします
pip インストール --upgrade pip
ピップ -V
pipでdocker-composeをインストールする
docker-compose -バージョン

アンインストール

 sudo pip アンインストール docker-compose

5. よく使われるコマンド

以下は、よく使用される docker-compose コマンドのリストです。

注:ほとんどの compose コマンドは、docker-compose.yml ファイルが配置されているディレクトリで実行する必要があります。

 docker-compose -h # ヘルプを表示
docker-compose up # すべてのコンテナを作成して実行する
docker-compose up -d # すべてのコンテナをバックグラウンドで作成して実行する
docker-compose -f docker-compose.yml up -d # テンプレートを指定する
docker-compose down # コンテナ、ネットワーク、ボリューム、イメージを停止して削除します。
docker-compose logs # コンテナの出力ログを表示する
コンテナのリアルタイム ログを表示するには、コマンド `docker-compose logs -f container_name` を使用します。
`docker-compose pull` # 依存イメージをプルする
dokcer-compose config # 設定を確認する
dokcer-compose config -q # 設定を確認します。問題がある場合にのみ出力します。
`docker-compose restart` # サービスを再起動します
docker-compose start # サービスを開始する
`docker-compose stop` # サービスを停止する
コマンド `docker-compose up -d nginx` は、Nginx コンテナをビルドして起動します。
コマンド `docker-compose exec nginx bash` は nginx コンテナにログインします。
docker-compose psはすべてのコンテナを表示します
docker-compose build nginx でイメージをビルドする
`docker-compose build --no-cache nginx` はキャッシュを含まないビルド コマンドです。
`docker-compose config -q` コマンドは `docker-compose.yml` ファイルの設定を検証します。設定が正しい場合は何も出力されませんが、設定が正しくない場合はエラーメッセージが出力されます。
`docker-compose events --json nginx` コマンドは、Nginx Docker ログを JSON 形式で出力します。
`docker-compose pause nginx` は nginx コンテナを一時停止します。
docker-compose unpause nginx nginxコンテナを復元します
`docker-compose rm nginx` コマンドは nginx コンテナを削除します (削除する前にコンテナをシャットダウンする必要があります)。

6. 例

新しい docker-compose.yml ファイルを作成してください。これは単なる簡単な例です。より詳細な例については、ご自身でご確認ください。

バージョン: '1'
サービス:
ウェブ1:
画像: nginx
ポート:
- 「8081:80」
コンテナ名: "test1"
ネットワーク:
- 開発者
ウェブ2:
画像: nginx
ポート:
- 「8082:80」
コンテナ名: "test2"
ネットワーク:
- 開発者
- プロ
ネットワーク:
開発者:
ドライバー:ブリッジ
プロ:
ドライバー:ブリッジ

YAML 構文チェック: https://www.toyaml.com/index.html

webapp ディレクトリを作成し、docker-compose.yaml ファイルを webapp ディレクトリにコピーし、docker-compose を使用してアプリケーションを起動します。

 docker-compose up -d

アクセステスト:

http://127.0.0.1:8081 http://127.0.0.1:8082 .

7. まとめ

Docker Composeは、小規模から中規模のプロジェクトのデプロイに適しています。分散デプロイ環境を構築する必要がある場合は、SwamまたはKubernetesの使用をお勧めします。学習や研究のために単一マシン環境にのみデプロイするプロジェクトには、Docker Composeが適しています。