📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

ページの作成:「== 概要 == Docker Composeは、マルチコンテナアプリケーションを定義して実行するためのツールである。<br> 効率的な開発とデプロイを可能にすることができる。<br> <br> Composeは、アプリケーションスタック全体の制御を簡素化して、サービス、ネットワーク、ボリュームを単一のYAMLファイルで簡単に管理できる。<br> そして、1つのコマンドで、設定ファ…」
 
 
(同じ利用者による、間の9版が非表示)
28行目: 28行目:
*: Composeは、Composeファイル内の変数をサポートしている。
*: Composeは、Composeファイル内の変数をサポートしている。
*: これらの変数を使用して、異なる環境や異なるユーザ向けにコンポジションをカスタマイズすることができる。
*: これらの変数を使用して、異なる環境や異なるユーザ向けにコンポジションをカスタマイズすることができる。
*: (ポート番号やバージョン等)
* 豊富なコミュニティとサポート
* 豊富なコミュニティとサポート
*: Docker Composeは、活気ある活発なコミュニティの恩恵を受けている。
*: Docker Composeは、活気ある活発なコミュニティの恩恵を受けている。
*: これは、豊富なリソース、チュートリアル、サポートを意味しており、このコミュニティ主導のエコシステムはDocker Composeの継続的な改善に貢献し、
*: これは、豊富なリソース、チュートリアル、サポートを意味しており、このコミュニティ主導のエコシステムはDocker Composeの継続的な改善に貢献し、
*: ユーザが問題を効果的にトラブルシューティングできるよう支援する。
*: ユーザが問題を効果的にトラブルシューティングできるよう支援する。
<br>
また、以下に示すような利点もある。<br>
* 複数のDockerfileを同時に起動できる。
* ブリッジネットワークが自動作成されるため、コンテナ同士の通信が可能となる。
* インフラ構成の可視化やバージョン管理がDocker Composeで完結する。
<br><br>
== docker-compose.ymlファイル ==
<syntaxhighlight lang="yaml">
version: '<docker-compose.ymlのバージョン>'      # 例: '3'
services:
    <コンテナ名 1 (任意の名前)>:                  # 例: sample1
      container_name: <任意のコンテナ名>          # 任意のコンテナ名を指定
      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
      restart: on-failure                    # コンテナが異常終了した場合の再起動ポリシーの設定
                                              # always: 終了ステータスの種類を問わず、常に再起動する
                                              # unless-stopped: コンテナが手動で停止された場合を除いて再起動する
                                              # on-failure: コンテナがエラーコードで停止した場合に再起動する (エラーコードは非ゼロの終了コードであること)
                                              # no: 再起動しない
      networks:                              # Dockerネットワークの構成
          - <任意の名前 1  例: frontend>
    <コンテナ名 2 (任意の名前)  例: sample2)>:
      build: <Dockerfileのファイルパス>          # Dockerfileを使用する場合、Dockerfileのパスをbuildで指定
      volumes:                              # ホストとコンテナでファイルを同期する場合等
          - <ホスト側のパス:コンテナのパス>
      ports:                                # ポート転送 (ポートフォワーディング) を行う場合
          - <ホスト側のポート:コンテナのポート>
      environment:                          # 環境変数を指定する場合
          <環境変数名 1: 環境変数値>
          <環境変数名 2: 環境変数値>
          <環境変数名 3: 環境変数値>
      depends_on:                            # 依存関係を設定する場合 (他のコンテナと連携する場合)
          - <コンテナ名>                        # 例: sample1
      networks:                              # Dockerネットワークの構成
          - <任意の名前 1  例: frontend>
          - <任意の名前 2  例: backend>
      logging:                              # 例: ログドライバを"json-file", max-sizeを"10m", max-fileを"5"に指定する
          driver: "<ログドライバのオプション>"      # ログの出力先やフォーマットを指定するログドライバを指定する
                                              # ログドライバには、json-file, syslog, journald, fluentd等がある
          options:                                # ログドライバのオプションを指定する
            max-size: "<単一のログファイルの最大サイズ>"  # 例: "10m"  (ログファイルの最大サイズを10[MB]に指定する場合)
            max-file: "<保持するログファイルの最大数>"  # 例: "5"
      dns:                                  # リストの順序は、サービスがDNSサーバに対してクエリを発行する優先順位を示す
          - <DNSサーバのIPアドレス 1>
          - <DNSサーバのIPアドレス 2>
      dns_search:                            # サービスが名前解決を行う時に使用する検索ドメインのリストを指定する
                                              # これにより、指定された検索ドメインで解決できない場合に、他のドメインでの検索が行われる
          - example.com
          - subdomain.example.com
networks:
    frontend:
      driver: <ネットワークのドライバを指定>        # bridge, overlay, macvlan等を指定する
    backend:
      driver: <ネットワークのドライバを指定>        # bridge, overlay, macvlan等を指定する
      external: <既存の外部ネットワークを指定>
      driver_opts: <ドライバに関連する追加のオプションを指定>
      ipam:                                # IPアドレスの管理に関連する設定を指定する
          driver: default                    # IPアドレス管理のドライバを指定する
          config:                            # driverセクションに指定したドライバに関する設定を指定する
            - subnet: "<サブネットマスク>"      #  例: 172.18.0.0/16
# networksセクションの説明:
# 上記の例では、backendネットワークに対しては、ipamセクションでサブネットを指定している。
# これにより、ネットワーク内のコンテナに対して、手動でIPアドレスを指定することができる。
</syntaxhighlight>
<br><br>
<br><br>


37行目: 116行目:
<code>docker-compose up -d</code>コマンドは、Docker Compose v2では動作しない。<br>
<code>docker-compose up -d</code>コマンドは、Docker Compose v2では動作しない。<br>
YAMLファイルを実行するには、<code>docker compose -d</code>コマンドで実行する必要がある。<br>
YAMLファイルを実行するには、<code>docker compose -d</code>コマンドで実行する必要がある。<br>
<br>
Composeコマンドは、docker-compose.ymlファイルが存在するディレクトリで行う。<br>
<br>
==== サービスイメージの確認 ====
docker compose images
<br>
==== サービスイメージの作成 ====
サービスイメージのビルドを実行する。<br>
YAMLファイルに<code>image:</code>が記述されている場合、そのイメージ名がローカルに存在しなければ、リモートからプルする。<br>
YAMLファイルに<code>image:</code>が記述されていない場合、<code>build</code>に記述されているパスのDockerfileを使用して、コンテナイメージを構築する。<br>
docker compose build
<br>
==== リモートからサービスイメージを取得 ====
リモートからコンテナイメージを取得する。<br>
docker compose pull
<br>
==== サービスの確認 ====
docker compose ps
<br>
==== サービスの作成 ====
構築されたサービスイメージからサービスを作成する。<br>
また、作成直後のサービスは停止している。<br>
docker compose create
<br>
==== サービスの実行 ====
サービスを作成して起動する。<br>
<code>-d</code>オプションを付加することにより、バックグラウンドで実行することができる。<br>
また、<code>--build</code>オプションを付加することにより、起動前にイメージを構築することもできる。<br>
docker compose up
# バックグラウンドで実行する場合
docker compose up -d
# サービスイメージを構築してサービスを実行する場合
docker compose up -d --build
<br>
==== サービスの起動 ====
停止中のサービスを起動する。<br>
docker compose start
<br>
==== サービス再起動 ====
サービスを再起動する。<br>
docker compose restart
<br>
==== サービスの停止 ====
起動中のサービスを停止する。<br>
docker compose stop
<br>
==== サービスの削除 ====
docker-compose.ymlファイルに記述されているサービスからコンテナを停止して、そのコンテナとネットワークを削除する。<br>
<code>--rmi all</code>オプションを付加することにより、サービスイメージも削除することができる。<br>
docker compose down
# サービスイメージの停止および削除
docker compose down --rmi all
<br>
==== サービスの強制削除 ====
停止中のコンテナを削除する。<br>
docker compose rm
<br>
==== サービスの強制消去 ====
サービスを強制停止する。<br>
docker compose kill
<br>
==== コマンドの実行 ====
引数で指定したサービスのコンテナ内でコマンドを実行する。<br>
docker compose run <サービス名> <コマンド> <引数 1> <引数 2> <引数...>
# 例: docker-compose.yml内のdbを強制的にpullして、dbおよびwebを実行する
docker compose run db web new . --force --database=mysql
<br>
==== サービスの設定の確認 ====
docker-compose.ymlで記述されている設定を表示する。<br>
docker compose config
<br>
==== サービスログの確認 ====
サービスのログを表示する。<br>
docker compose logs
<br><br>
<br><br>




__FORCETOC__
__FORCETOC__
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:Web]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:Web]][[カテゴリ:コンテナ]]