Docker Runコマンド
docker run
コマンドは、Dockerを使用するための基本的な部分であり、ユーザーがイメージから新しいコンテナを作成および開始することができます。この記事では、docker run
コマンドで使用できるさまざまなコマンドフラグについて詳しく説明し、コンテナの動作をカスタマイズする方法を紹介します。
基本的な構文と使用法
docker run
コマンドの基本的な構文は次のとおりです。
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
OPTIONS
は、この記事で説明するコマンドフラグです。IMAGE
はDockerイメージの名前で、TAG
とDIGEST
はオプションの識別子です。COMMAND
およびARG
は、コンテナ内で実行する追加のコマンドおよび引数です。
Docker Runコマンドの主要なフラグ
-d、--detach
このフラグは、コンテナをデタッチモードで実行し、バックグラウンドで実行し、ターミナルを開いたままにする必要がないことを意味します。このフラグを使用するには、docker run
コマンドに-d
または--detach
を含めます。
$ docker run -d nginx
-it(インタラクティブとTTY)
-it
フラグは、2つの別々のフラグ、-i
(インタラクティブ)と-t
(TTY)の組み合わせです。これらのフラグを一緒に使用することで、コンテナとリアルタイムで対話し、擬似TTYを割り当てて、コンテナを実行する際によりインタラクティブな体験を提供することができます。
-i
または--interactive
フラグは、コンテナの標準入力(stdin)をターミナルにアタッチしていなくても開いたままにします。これにより、コンテナが実行されている間に入力を送信できます。
-t
または--tty
フラグは、コンテナ用に擬似TTYを割り当てます。これにより、テキスト端末がエミュレートされ、コンテナのコマンドラインインターフェイスと対話することが容易になります。
$ docker run -it ubuntu bash
この例では、インタラクティブなBashシェルを持つubuntu
コンテナを開始しています。-it
フラグを使用すると、コンテナ内でコマンドを実行し、ローカルのターミナルで作業しているかのようにリアルタイムで出力を受け取ることができます。
-p, --publish
-p
または--publish
フラグは、コンテナのポートをホストマシンのポートにマップするために使用されます。これは、コンテナサービスを外部ネットワークやホストマシン自体に公開するために必要です。
$ docker run -d -p 8080:80 nginx
-v, --volume
-v
または--volume
フラグは、ホストディレクトリまたは名前付きボリュームをコンテナのファイルシステムにマウントするために使用されます。これは、データの永続性を確保し、コンテナとホストマシン間でファイルを共有するために役立ちます。
$ docker run -d -v /path/on/host:/path/in/container nginx
-e, --env
-e
または--env
フラグを使用すると、コンテナ内で環境変数を設定できます。これは、コンテナ内で実行されるアプリケーションに構成情報を渡すために役立ます。
$ docker run -d -e MYSQL_ROOT_PASSWORD=my-secret-password mysql
--name
--name
フラグは、コンテナにカスタム名前を割り当てて、管理および参照を容易にします。
$ docker run -d --name my-nginx-container nginx
--restart
--restart
フラグは、コンテナの再起動ポリシーを決定します。障害発生時やホストマシンが再起動した場合に使用されます。no
、on-failure
、unless-stopped
、always
のいずれかの値を受け入れます。
$ docker run -d --restart=always nginx
--memory
--memory
フラグは、コンテナが使用できるメモリの量を制限します。これは、ホストマシン上のリソース使用量を制御し、単一のコンテナが過剰なリソースを消費しないようにするために役立ちます。
$ docker run -d --memory=512m nginx
--cpu-shares
--cpu-shares
フラグは、コンテナ間のCPU使用率の相対ウェイトを割り当てます。これにより、複数のコンテナがリソースを競合する場合に、各コンテナが受け取るCPU時間を制御できます。
$ docker run -d --cpu-shares=1024 nginx
--network
--network
フラグは、コンテナを特定のネットワークに接続します。このフラグを使用すると、コンテナのネットワーク環境を制御し、コンテナ間の通信を容易にすることができます。
$ docker run -d --network=my-custom-network nginx
--rm
--rm
フラグは、コンテナが終了したら自動的にコンテナを削除します。これにより、短時間のコンテナを実行する場合に、ホストマシンをクリーンに保ち、不要なクラッターから解放することができます。
$ docker run --rm -it ubuntu bash
--entrypoint
--entrypoint
フラグを使用すると、コンテナのデフォルトのエントリーポイントをオーバーライドできます。これは、新しいDockerイメージを作成することなく、コンテナ内で異なるコマンドや実行可能ファイルを実行するために役立ちます。
$ docker run --entrypoint=/bin/sh -it nginx
この例では、nginxコンテナのデフォルトのエントリーポイントを/bin/sh
にオーバーライドしています。これにより、コンテナのシェルにインタラクティブにアクセスできます。
参考