【Docker】Docker compose ~ 基本編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/04/24/160044
https://dk521123.hatenablog.com/entry/2018/04/10/234030

の続き。

今回は、docker-compose (v1) / docker compose (v2) に関して、
もう少し深堀りする。

目次

【1】docker-compose / docker compose
【2】他のサービスとの違い
 1)Dockerfile との違い
 2)Kubernetes との違い
【3】docker-compose / docker composeコマンド
 1)docker-compose up -d / docker compose up -d
 2)docker-compose ps / docker compose ps
 3)docker-compose down / docker compose down
 4)docker-compose exec / docker compose exec

【1】docker-compose / docker compose

* 複数のコンテナ(例えば、Webサーバ/DB など)を組み合わせて
 1つのアプリケーションとして定義するYAMLファイル
 => 以下「例:Apacheコンテナの docker-compose.yml」を参照
 => 詳細な書き方については、以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2020/12/18/152949

例:Apacheコンテナの docker-compose.yml

version: "3"

services:
    web-server:
        image: httpd
        ports:
            - "8081:80"
        restart: always

【2】他のサービスとの違い

1)Dockerfile との違い

- Dockerfile docker compose
Image 作成可能 作成可能
Network 作成不可 作成可能
Volume 作成不可 作成可能

Docker compose

* Imageおよび周辺環境(Network/Volume)を作成する

Dockerfile

* Imageを作るもので、Network/Volumeは作成できない

2)Kubernetes との違い

Kubernetes

* コンテナを管理する

Docker compose

* コンテナ群の作成・削除機能はあるが
 コンテナ管理機能はない
- Kubernetes Docker compose
コンテナ作成/破棄 可能 可能
コンテナ管理 可能 不可

【3】docker-compose / docker composeコマンド

1)docker-compose up -d / docker compose up -d
2)docker-compose ps / docker compose ps
3)docker-compose down / docker compose down

※ それ以外は、以下のサイトを参照のこと。

https://qiita.com/ryuichi1208/items/8b5adc88a93319cb76a2

1)docker-compose up -d / docker compose up -d

* docker-compose up (v1) / docker compose up (v2) は、サービス起動
* -d は、バックグラウンド起動

2)docker-compose ps / docker compose ps

* コンテナ一覧表示

3)docker-compose down / docker compose down

* コンテナ・ネットワーク・イメージ・ボリュームの停止と削除
 => stop は、サービスの停止

全て(※1)を一括消去するコマンド

docker-compose down --rmi all --volumes --remove-orphans
# docker compose down --rmi all --volumes --remove-orphans

※1
コンテナ、イメージ、ボリューム、ネットワーク、未定義コンテナ

https://qiita.com/suin/items/19d65e191b96a0079417

4)docker-compose exec / docker compose exec

https://docs.docker.jp/engine/reference/commandline/compose_exec.html

* 実行中のコンテナ内でコマンドを実行

構文

# コンテナ内に入る
# docker-compose exec <Service Name> /bin/bash
sudo docker compose exec broker bash
# 中に入った後に出たかったら「exit」コマンドで出れる

# ash: Almquist Shell (組み込み系Linuxではashがポピュラー)
docker-compose exec <Service Name> ash

https://qiita.com/HorikawaTokiya/items/f9188d05a58bad47ce8d

関連記事

Docker compose ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2022/04/28/000000
Docker compose ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/05/21/222910
Docker compose ~ docker-compose.yml ~
https://dk521123.hatenablog.com/entry/2020/12/18/152949
Docker compose ~ Version 2 ~
https://dk521123.hatenablog.com/entry/2023/01/02/000000
Docker compose ~ PostgreSQL
https://dk521123.hatenablog.com/entry/2023/07/20/025544
Docker compose ~ Pgweb/pgAdmin ~
https://dk521123.hatenablog.com/entry/2023/08/10/111919
Docker compose ~ LocalStack/Glue4.0 ~
https://dk521123.hatenablog.com/entry/2023/03/25/021432
Dockerfile / Docker Compose でシェルを実行する
https://dk521123.hatenablog.com/entry/2023/07/21/234509
Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker ~ Linux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2018/04/10/234030
Docker ~ 基本編 / Dockerfile ~
https://dk521123.hatenablog.com/entry/2020/04/14/000000
Docker ~ 基本編 / dockerコマンド ~
https://dk521123.hatenablog.com/entry/2020/04/13/000000
Docker ~ 基本編 / Data Volume ~
https://dk521123.hatenablog.com/entry/2018/09/08/222100
Docker によるトラブルシューティング
https://dk521123.hatenablog.com/entry/2017/09/24/162257