docker container run コマンドの複雑さ

 「Docker container run」 コマンドは、単一のコンテナを作成する際には比較的シンプルですが、複数のコンテナを作成するコマンドが必要になります。また、MariaDBのコンテナを作成する場合には、次のような長いコマンドが必要となり、複雑さが増します。

docker container run --name mariadb-container -dit -v dbdata: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 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

このコマンドの各オプションやパラメータの意味は下表のとおりです。

 このコマンドは、MariaDBのコンテナを実行します。ホスト上の “dbdata” ディレクトリがコンテナ内の “/var/mysql” ディレクトリにマウントされ、MariaDBのルートパスワード、データベース名、ユーザ名、およびパスワードが環境変数として設定されます。 コンテナはバックグラウンドで実行され、インタラクティブなセッションが開かれます。

オプション/パラメータ説明
docker container runDockerコンテナを実行するためのコマンド
–name mariadb-containerコンテナに名前 “mariadb-container” を指定
-dit-d: デタッチドモードでコンテナを実行する(バックグラウンド)<br>-i: インタラクティブモードでコンテナを実行する(標準入力をオープン)<br>-t: 疑似TTY(端末)を割り当てる
-v sample-data:var/mysqlボリュームのマウント。ホスト上の “sample-data” ディレクトリをコンテナ内の “/var/mysql” ディレクトリにマウントする
-e MARIADB_ROOT_PASSWORD=rootpass環境変数 “MARIADB_ROOT_PASSWORD” を “rootpass” に設定
-e MARIADB_DATABASE=sample-db環境変数 “MARIADB_DATABASE” を “sample-db” に設定
-e MARIADB_USER=sample-user環境変数 “MARIADB_USER” を “sample-user” に設定
-e MARIADB_PASSWORD=password環境変数 “MARIADB_PASSWORD” を “password” に設定
mariadb:latest使用するDockerイメージを指定。ここでは、最新のMariaDBイメージを使用
各オプションやパラメータの意味

 このような長いコマンドを入力する際には、タイプミスや記述の間違いが発生しやすく、コマンドの理解や保守が困難になる場合があります。

 そのため、複数のコンテナを管理する場合には、Docker Composeというソフトウェアが重宝します。Docker Composeを使用すると、コンテナやその設定をYAMLファイルに記述し、1つのファイルで複数のコンテナを定義できます。

 これにより、複雑なコマンドを記述する必要がなくなり、コンテナの管理が容易になります。また、YAMLファイルを通じてコンテナの設定や依存関係を明示的に定義できるため、他の開発者との共同作業や環境の再現が容易になります。

 Docker Composeを使用すると、複数のコンテナを1つのYAMLファイルに定義し、コマンドを簡潔にして管理できます。例えば、MariaDBのコンテナを含むサービスを定義するYAMLファイルは次のようになります。

version: '3.8'

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

volumes:
  sample-data:

このYAMLファイルでは、以下のような設定が行われています。

要素説明
version使用する Docker Compose ファイルのバージョンを指定。ここでは、3.8 を使用しています。
services定義するサービスのセクション。各サービスは独立して定義されます。
mariadbサービスの名前。
image使用する Docker イメージを指定します。ここでは、MariaDB の最新バージョンを使用しています。
container_nameコンテナに割り当てる名前を指定します。ここでは、”mariadb-container” を指定しています。
volumesボリュームのマウントを定義します。
sample-dataホスト側のボリューム名を指定します。
/var/mysqlコンテナ側のマウント先のパスを指定します。
environmentコンテナ内の環境変数を指定します。
MARIADB_ROOT_PASSWORDMariaDB のルートパスワードを設定します。
MARIADB_DATABASEMariaDB に作成されるデータベースの名前を指定します。
MARIADB_USERMariaDB のユーザ名を指定します。
MARIADB_PASSWORDMariaDB ユーザのパスワードを指定します。
YAMLファイルの意味

まとめ

 このようにDocker Composeを使用すると、複雑なコマンドを使う必要がなくなり、設定の管理が簡単になります。また、「docker-compose up」 コマンドを使用することで、YAMLファイルに定義されたサービスを一括で起動できます。