Docker超入門:docker container run の複雑さを解消する!Docker Composeでの管理方法

 Dockerを使い始めると、最初は docker container run コマンドを使ってコンテナを起動することが多いですよね。シンプルなコンテナならこれで十分ですが、ちょっと複雑なサービス(例えば MariaDB など)を立ち上げようとすると、コマンドがどんどん長くなって大変…。タイプミスもしやすく、再利用もしづらいのが悩みどころです。

docker container run コマンドの複雑さ

たとえば、MariaDBを起動する場合はこんな感じのコマンドになります。

docker container run --name mariadb-container -dit -v sample-data:/var/mysql \
 -e MARIADB_ROOT_PASSWORD=rootpass -e MARIADB_DATABASE=sample-db \
 -e MARIADB_USER=sample-user -e MARIADB_PASSWORD=password mariadb:latest

 一行に収めるとかなり長いですね。これだけオプションが多いと「どこでタイプミスした?」と悩むこともあります。

各オプションの意味

オプション/パラメータ説明
docker container runDockerコンテナを実行するコマンド
--name mariadb-containerコンテナ名を指定
-dit-d: バックグラウンド実行-i: 標準入力を有効化-t: 疑似TTYを割り当て
-v sample-data:/var/mysqlボリュームをマウント(データ永続化用)
-e MARIADB_ROOT_PASSWORD=rootpassMariaDBのrootパスワードを設定
-e MARIADB_DATABASE=sample-db作成するデータベース名
-e MARIADB_USER=sample-userユーザ名
-e MARIADB_PASSWORD=passwordユーザのパスワード
mariadb:latest使用するMariaDBイメージ

 このように、パスワードやボリュームの設定を全部書き連ねるので、どうしても長いコマンドになります。

Docker Composeで管理する

そこで登場するのが Docker Compose
 これは YAMLファイルにコンテナの設定をまとめて書いて、シンプルなコマンドで一括管理できる仕組み です。

MariaDBコンテナをComposeで書くと、次のようになります。

version: '3.8'

services:
  mariadb:
    image: mariadb:latest
    container_name: mariadb-container
    volumes:
      - sample-data:/var/mysql
    environment:
      - MARIADB_ROOT_PASSWORD=rootpass
      - MARIADB_DATABASE=sample-db
      - MARIADB_USER=sample-user
      - MARIADB_PASSWORD=password

volumes:
  sample-data:

これを docker-compose.yaml という名前で保存して、以下のコマンドを実行するだけです。

docker-compose up -d

YAMLファイルの意味

要素説明
versionDocker Composeファイルのバージョン。ここでは 3.8 を指定
services定義するサービス群(複数のコンテナをまとめられる)
mariadbサービス名(任意)
image使用するDockerイメージ。ここではmariadb:latest
container_nameコンテナの名前を指定
volumesデータ永続化のためのボリュームマウント
environment環境変数をまとめて設定できる

 こうして見ると、複雑な docker container run のコマンドを一発で分かりやすく整理できているのが分かりますね。

まとめ

  • docker container run でもコンテナは起動できるけど、複雑なアプリだとコマンドが長くなりすぎる。
  • Docker Composeを使えば、設定をYAMLファイルにまとめられて見やすい。
  • 再利用やチーム開発にも向いていて、「docker-compose up」 だけで一括起動できる。

「手書きの長い呪文コマンド」から解放されて、快適にコンテナ管理ができるのがComposeの強みです。