• 投稿カテゴリー:Docker / 技術 / 開発
  • 投稿の最終変更日:12月 18, 2024

基本的なコマンド

build

Dockerイメージを作成するためのコマンドです。Dockerfileに基づいて新しいイメージを構築します。

docker image build [オプション] Dockerfileのパス

主なオプション:

  • -t, –tag: イメージにタグを付ける
  • –no-cache: ビルドキャッシュを使用しない

run

新しいコンテナを作成して起動するコマンドです。指定されたイメージを基にコンテナを作成し、実行します。

docker container run [オプション] imagename

主なオプション:

  • -d, –detach: バックグラウンドで実行
  • -p, –publish: ポートのマッピング

start

停止中のコンテナを起動するコマンドです。既存のコンテナを再開します。

docker container start [オプション] containername

主なオプション:

  • -a, –attach: 標準出力とエラーをアタッチ

stop

実行中のコンテナを停止するコマンドです。コンテナにSIGTERMシグナルを送信し、一定時間後にSIGKILLを送信します。

docker container stop [オプション] containername

主なオプション:

  • -t, –time: 停止までの待機時間(秒)

rm

コンテナを削除するコマンドです。停止中のコンテナを完全に削除します。

docker container rm [オプション] containername

主なオプション:

  • -f, –force: 実行中のコンテナも強制的に削除

restart

コンテナを再起動するコマンドです。コンテナを一旦停止し、再度起動します。

docker container restart [オプション] containername

主なオプション:

  • -t, –time: 停止までの待機時間(秒)

exec

docker container exec [オプション] containername コマンド

実行中のコンテナ内でコマンドを実行するコマンドです。コンテナ内で新しいプロセスを起動し、指定されたコマンドを実行します。

主なオプション:

  • -i, –interactive: 対話モードを保持
  • -t, –tty: 疑似TTYを割り当て

bash

コンテナ内でシェルを起動する場合によく使用されます。例えば、以下のコマンドでコンテナ内のbashシェルを起動できます:

docker exec -it containername bash
  • オプションの連結
    • Docker CLIでは、複数のオプションを連結して使用することができます。例えば、-itオプションは-iと-tを組み合わせたものです。これにより、対話モードを保持しつつ疑似TTYを割り当てることができ、コンテナ内でのコマンド実行がより便利になります。

docker compose

Docker Composeは、複数のコンテナを定義し、実行するためのツールです。YAML形式のファイルを使用して、アプリケーションのサービス、ネットワーク、ボリュームを設定します。主なコマンドには、up(サービスの作成と起動)、down(サービスの停止と削除)、ps(実行中のサービスの一覧表示)などがあります。

Docker Composeの基本的な使用方法は以下の通りです:

docker compose up    # サービスの作成と起動
docker compose down  # サービスの停止と削除
docker compose ps    # 実行中のサービスの一覧表示

これらのコマンドを使用することで、複雑な環境でも簡単にコンテナの管理ができます。

実行するディレクトリ

Docker Composeコマンドを実行する際は、docker-compose.ymlファイルが存在するディレクトリで行う必要があります。通常、プロジェクトのルートディレクトリにこのファイルを配置します。ターミナルでcdコマンドを使用して、適切なディレクトリに移動してからDocker Composeコマンドを実行することが重要です。

基本はこのdocker-compose.ymlを使って環境構築を行うことになります。

docker-compose.ymlファイルには、アプリケーションの各サービス(コンテナ)の設定、ネットワーク、ボリュームなどが定義されています。このファイルを使用することで、複数のコンテナを一度に管理し、開発環境や本番環境を簡単に再現することができます。また、チーム内での環境の共有や、CI/CDパイプラインへの統合も容易になります。

環境変数ファイル(.env)について

環境変数ファイル(.env)は、Docker Composeで使用される重要な設定ファイルの1つです。このファイルには、アプリケーションの設定に必要な環境変数が定義されており、docker-compose.ymlファイル内で参照することができます。.envファイルを使用することで、機密情報やホスト固有の設定をdocker-compose.ymlファイルから分離し、より安全で柔軟な環境構築が可能になります。

.envの書き方

.envファイルは、通常、キーと値のペアで構成されます。各行に1つの環境変数を定義し、’=’記号を使用してキーと値を区切ります。例えば:

DATABASE_URL=mysql://user:password@localhost/dbname
API_KEY=abcdef123456
DEBUG=true

これらの変数は、docker-compose.ymlファイル内で${VARIABLE_NAME}の形式で参照できます。重要な注意点として、.envファイルはバージョン管理システムにコミットしないようにし、代わりに.env.exampleなどのサンプルファイルを提供することが推奨されます。

.envでコンテナ名の指定

コンテナ名を.envファイルで指定することで、Docker Composeの設定をより柔軟にすることができます。これにより、異なる環境や開発者間でコンテナ名を簡単に変更できるようになります。例えば、.envファイルに以下のように記述することで、docker-compose.ymlファイル内でコンテナ名を動的に設定できます:

CONTAINER_NAME=myapp_web

そして、docker-compose.ymlファイル内で次のように参照します:

services:
  web:
    container_name: ${CONTAINER_NAME}
    # その他の設定...

このように設定することで、.envファイルでコンテナ名を変更するだけで、docker-compose.ymlファイルを修正せずにコンテナ名を変更できます。これは特に、複数の開発環境や本番環境で異なるコンテナ名を使用する場合に便利です。