「設定 - Docker Compose」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
128行目: 128行目:
<code>--rmi all</code>オプションを付加することにより、サービスイメージも削除することができる。<br>
<code>--rmi all</code>オプションを付加することにより、サービスイメージも削除することができる。<br>
  docker compose down
  docker compose down
 
  # サービスイメージの停止および削除
  # サービスイメージの停止および削除
  docker compose down --rmi all
  docker compose down --rmi all
<br>
<br>
==== サービスの強制削除 ====
==== サービスの強制削除 ====
停止中のコンテナを削除する。<br>
停止中のコンテナを削除する。<br>

2024年2月4日 (日) 11:07時点における版

概要

Docker Composeは、マルチコンテナアプリケーションを定義して実行するためのツールである。
効率的な開発とデプロイを可能にすることができる。

Composeは、アプリケーションスタック全体の制御を簡素化して、サービス、ネットワーク、ボリュームを単一のYAMLファイルで簡単に管理できる。
そして、1つのコマンドで、設定ファイルから全てのサービスを作成および起動することができる。

Composeは、本番環境、ステージング環境、開発環境、テスト環境、CIワークフロー等、あらゆる環境で動作する。
また、アプリケーションのライフサイクル全体を管理するコマンドも用意されている。

  • サービスの開始、停止、再構築。
  • 実行中のサービスのステータスの表示。
  • 実行中のサービスのログ出力をストリームする。
  • サービスに対して単発のコマンドを実行する。



Docker Composeの利点

Docker Composeを使用することにより、コンテナ化されたアプリケーションの開発、デプロイ、管理を効率化できるメリットがいくつか存在する。

  • シンプルなコントロール
    Docker Composeでは、1つのYAMLファイルでマルチコンテナアプリケーションを定義および管理できる。
    これにより、様々なサービスのオーケストレーションと調整という複雑な作業が簡素化されて、アプリケーション環境の管理と複製が容易になる。
  • 効率的なコラボレーション
    Docker Composeの設定ファイルは共有が簡単なため、開発者、運用チーム、その他の関係者間でのコラボレーションが容易になる。
    この協調的なアプローチは、よりスムーズなワークフロー、より迅速な問題解決、全体的な効率の向上に繋がる。
  • 迅速なアプリケーション開発
    Composeは、コンテナの作成に使用した設定をキャッシュする。
    変更されていないサービスを再起動する場合、Composeは既存のコンテナを再利用することにより、環境にすばやく変更を加えることができる。
  • 異なる環境間での移植性
    Composeは、Composeファイル内の変数をサポートしている。
    これらの変数を使用して、異なる環境や異なるユーザ向けにコンポジションをカスタマイズすることができる。
    (ポート番号やバージョン等)
  • 豊富なコミュニティとサポート
    Docker Composeは、活気ある活発なコミュニティの恩恵を受けている。
    これは、豊富なリソース、チュートリアル、サポートを意味しており、このコミュニティ主導のエコシステムはDocker Composeの継続的な改善に貢献し、
    ユーザが問題を効果的にトラブルシューティングできるよう支援する。


また、以下に示すような利点もある。

  • 複数のDockerfileを同時に起動できる。
  • ブリッジネットワークが自動作成されるため、コンテナ同士の通信が可能となる。
  • インフラ構成の可視化やバージョン管理がDocker Composeで完結する。



docker-compose.ymlファイル

 version: '<docker-compose.ymlのバージョン>'      # 例: '3'
 services:
    <コンテナ名 1 (任意の名前)>:                   # 例: sample1
       image: <イメージ (リポジトリ:タグ) を指定する>   # イメージからコンテナを生成する場合、imageを指定
       command:
          <コンテナ起動時に実行するコマンド>          #  例: --default-authentication-plugin=mysql_native_password>
       volumes:                               # ホストとコンテナでファイルを同期する場合等
          - <ホスト側のパス 1:コンテナのパス 1>      #   例: /tmp/mysql/mysql_data:/var/lib/mysql
          - <ホスト側のパス 2:コンテナのパス 2>
       ports:                                 # ポート転送 (ポートフォワーディング) を行う場合
          - <ホスト側のポート 1:コンテナのポート 1>    # 例: 63306:3306
          - <ホスト側のポート 2:コンテナのポート 2>
       environment:                           # 環境変数を指定する場合
          <環境変数名 1: 環境変数値>              # 例: MYSQL_ROOT_PASSWORD: password
          <環境変数名 2: 環境変数値>              # 例: MYSQL_PORT: 3306
 
    <コンテナ名 2 (任意の名前)  例: sample2)>:
       build: <Dockerfileのファイルパス>         # Dockerfileを使用する場合、buildを指定
       volumes:                              # ホストとコンテナでファイルを同期する場合等
          - <ホスト側のパス:コンテナのパス>
       ports:                                # ポート転送 (ポートフォワーディング) を行う場合
          - <ホスト側のポート:コンテナのポート>
       environment:                          # 環境変数を指定する場合
          <環境変数名 1: 環境変数値>
          <環境変数名 2: 環境変数値>
          <環境変数名 3: 環境変数値>
       depends_on:                           # 依存関係を設定する場合 (他のコンテナと連携する場合)
          - <コンテナ名>                        # 例: sample1



Composeコマンド

docker-compose up -dコマンドは、Docker Compose v2では動作しない。
YAMLファイルを実行するには、docker compose -dコマンドで実行する必要がある。

Composeコマンドは、docker-compose.ymlファイルが存在するディレクトリで行う。

サービスイメージの確認

docker compose images


サービスイメージの作成

サービスイメージのビルドを実行する。
YAMLファイルにimage:が記述されている場合、そのイメージ名がローカルに存在しなければ、リモートからプルする。
YAMLファイルにimage:が記述されていない場合、buildに記述されているパスのDockerfileを使用して、コンテナイメージを構築する。

docker compose build


リモートからサービスイメージを取得

リモートからコンテナイメージを取得する。

docker compose pull


サービスの確認

docker compose ps


サービスの作成

構築されたサービスイメージからサービスを作成する。
また、作成直後のサービスは停止している。

docker compose create


サービスの実行

サービスを作成して起動する。
-dオプションを付加することにより、バックグラウンドで実行することができる。
また、--buildオプションを付加することにより、起動前にイメージを構築することもできる。

docker compose up

# バックグラウンドで実行する場合
docker compose up -d

# サービスイメージを構築してサービスを実行する場合
docker compose up -d --build


サービスの起動

停止中のサービスを起動する。

docker compose start


サービス再起動

サービスを再起動する。

docker compose restart


サービスの停止

起動中のサービスを停止する。

docker compose stop


サービスの削除

docker-compose.ymlファイルに記述されているサービスからコンテナを停止して、そのコンテナとネットワークを削除する。
--rmi allオプションを付加することにより、サービスイメージも削除することができる。

docker compose down

# サービスイメージの停止および削除
docker compose down --rmi all


サービスの強制削除

停止中のコンテナを削除する。

docker compose rm


サービスの強制消去

サービスを強制停止する。

docker compose kill


コマンドの実行

引数で指定したサービスのコンテナ内でコマンドを実行する。

docker compose run <サービス名> <コマンド> <引数 1> <引数 2> <引数...>

# 例: docker-compose.yml内のdbを強制的にpullして、dbおよびwebを実行する
docker compose run db web new . --force --database=mysql


起動中のサービスのコンテナにコマンドを実行する。

podman exec -it <サービス名> /bin/bash


サービスの設定の確認

docker-compose.ymlで記述されている設定を表示する。

docker compose config


サービスログの確認

サービスのログを表示する。

docker compose logs