はじめに
Dockerユーザーが最初に学習する最も重要なコマンドの1つは、 docker run
です。 指図。その主な機能はコンテナの構築と実行であるため、これは当然のことです。
コンテナを実行するには、さまざまな方法があります。基本構文に属性を追加することで、デタッチモードで実行するようにコンテナーを構成し、コンテナー名を設定し、ボリュームをマウントし、さらに多くのタスクを実行できます。
このチュートリアルでは、docker run
の使用方法を学習します 例を含むコマンド。

前提条件
- コマンドライン/ターミナルウィンドウへのアクセス
- sudoのユーザーアカウント 特権
- 既存のDockerインストール
dockerrunコマンドの使用方法
コマンドの基本的な構文は次のとおりです。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
コンテナを実行するには、コマンドに含める必要があるのは、コンテナが基づいているイメージだけです。
docker run [docker_image]
ローカルに保存されたDockerイメージからコンテナーを実行できます。システム上にないイメージを使用する場合、ソフトウェアはそのイメージをオンラインレジストリから取得します。
例として、Dockerfileを使用して、メッセージ Hello World
をエコーするタスクを含むサンプルDockerイメージを作成しました。 。私たちの場合、画像のIDは e98b6ec72f51
。イメージ名は、実行するコンテナによって異なります。
サンプルコンテナを実行するコマンドは次のようになります:
docker run e98b6ec72f51

コンテナは所定のタスクを実行します(メッセージ Hello World
をエコーします) )そして停止します。
特定の名前でコンテナを実行する
基本的なrun
を使用する場合 コマンドを実行すると、Dockerはランダムに選択された数字と文字の文字列を含むコンテナ名を自動的に生成します。
これらの一般的な名前でコンテナを覚えたり認識したりできる可能性はほとんどないため、コンテナ名をより覚えやすい名前に設定することを検討してください。
--name
を使用する 属性を使用すると、コンテナ名を割り当てることができます。特定の名前でコンテナを実行するためのコマンドは次のとおりです。
docker container run --name [container_name] [docker_image]
たとえば、サンプルコンテナを実行して、 container_instanceという名前を付けることができます。 コマンドの使用:
docker container run --name container_instance e98b6ec72f51

次のコマンドを使用して、すべてのコンテナー(実行中および停止中)のリストを表示することにより、コンテナー名が正常に設定されたかどうかを確認できます。
docker ps -a
下の画像のように、新しく作成したコンテナが表示されます。

コンテナをバックグラウンドで実行する(デタッチモード)
コンテナを実行するには、接続モードの2つの方法があります。 (フォアグラウンド)またはデタッチモード (バックグラウンドで)。
デフォルトでは、Dockerはコンテナを接続モードで実行します。ターミナルセッションに接続され、出力とメッセージが表示されることを意味します。
コンテナと現在のターミナルセッションを分離したい場合は、 -d
を使用してコンテナをバックグラウンドで実行できます。 属性。デタッチモードを使用すると、コンテナを停止せずに、開いているターミナルセッションを閉じることもできます。
コンテナをバックグラウンドで実行するためのコマンドは次のとおりです。
docker container run -d [docker_image]
この例では、コマンドは次のとおりです。
docker container run -d e98b6ec72f51

受け取る出力は、上の画像に表示されているものと同様になります。コンテナはプロセスを実行してから停止します。ターミナルセッション内に他の出力は表示されません。
コンテナをインタラクティブに実行する
Dockerを使用すると、コンテナをインタラクティブモードで実行できます。 。これは、コンテナの実行中にコンテナ内でコマンドを実行できることを意味します。
コンテナをインタラクティブに使用することで、実行中のコンテナ内のコマンドプロンプトにアクセスできます。これを行うには、次のコマンドを実行します。
docker container run -it [docker_image] /bin/bash
コマンドプロンプトが変わり、bashシェルに移動します 以下の例のように。

コンテナを実行してコンテナポートを公開する
コンテナを実行する場合、プロセスにアクセスする唯一の方法はコンテナの内部からです。コンテナへの外部接続を許可するには、特定のポートを開く(公開する)必要があります。
-p
を追加する必要があります docker run
のオプション コマンドと次の情報:
-p [host_ip]:[host_port]:[container_port]
host_ip
要素はオプションであり、コマンドの実行時に指定する必要はありません。
たとえば、コンテナのTCPポート80をDockerホストのポート8080にマップするには、次のコマンドを実行します。
docker container run -p 8080:80 [docker_image]
コンテナを実行してホストボリュームをマウントする
Dockerコンテナーは、生成したデータを保存しません。プロセスが終了するとすぐに、コンテナは停止し、コンテナ内のすべてが削除されます。
コンテナが停止した後も永続的なデータを保存する場合は、ストレージボリュームの共有を有効にする必要があります。
ボリュームをマウントするには、 -v
を使用します データを保存するディレクトリの指定された場所の後に、そのデータがコンテナ内に配置される場所が続く属性。
-v [/host/volume/location]:[/container/storage]
docker container run
コマンドは次のとおりです:
docker container run -v [/host/volume/location]:[/container/storage] [docker_image]
Dockerコンテナを実行し、プロセスが完了したら削除します
コンテナがタスクを実行すると停止しますが、コンテナを構成するファイルシステムはシステムに残ります。
概説されたタスクを実行するためにコンテナのみが必要であり、後でそのコンテナまたはそのファイルシステムを使用しない場合は、完了したら削除するように設定できます。
終了後に自動的に削除されるコンテナを実行するには、次のコマンドを使用します。
docker container run --rm [docker_image]