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にオーバーライドしています。これにより、コンテナのシェルにインタラクティブにアクセスできます。
参考