前書き
Dockerコンテナを作成すると、Universally Unique Identifier(UUID)が割り当てられます。 これらは、名前の競合を避け、人間の介入なしで自動化を促進するために不可欠です。 ホストおよびネットワークに対するコンテナを効果的に識別します。 ただし、64文字の人間が読める形式の長い表示か、より頻繁に表示される12文字の短い形式(285c9f0f9d3d
のように見えるか)を区別するために、人間はより多くの労力を要します。
人間を助けるために、Dockerは、アンダースコアで結合された2つの単語からランダムに生成された名前を持つコンテナーも提供します。 evil_ptolemy
。 これにより、あるコンテナと別のコンテナを区別しやすくなりますが、ランダムな名前はUUID以外のコンテナ関数の洞察を与えません。
コンテナの操作を学習する際に、ベアリングを簡単に保持できる3つのヒントを次に示します。
1 —実行時にコンテナに名前を付けます
--name=meaningful_name
をdocker run
コマンドに追加することにより、evil_ptolomy
は、対話型セッションおよびdocker ps
などのコマンドの出力でより認識しやすくなります。 ただし、制限があります。 コンテナ名は一意である必要があるため、意図的な命名を使用して、1つのコンテナを超えてサービスをスケーリングすることはできません。
コマンドラインまたはDockerfile:
docker run --name=meaningful_name
たとえば、nginx
ベースイメージに基づいてコンテナを実行し、次のように開始した場合:
docker run --name nginx -d nginx
名前は、実行中のコンテナのリストに表示されます。
docker ps
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
08f333ef7216 nginx "nginx -g 'daemon off" 15 seconds ago Up 14 seconds 80/tcp, 443/tcp nginx
名前はdocker ps
の出力に表示され、コンテナーの管理に使用できますが、コンテナーに添付した場合、またはログファイルに、コンテナーのコマンドプロンプトには表示されません。 それを実現するには、ホスト名を割り当てる必要もあります。
2 —コンテナにホスト名を割り当てます
--hostname
コマンドに指定された値は、コンテナー内の/etc/hostname
および/etc/hosts
内に設定されます。 その結果、コマンドプロンプトに表示されます。 これは、container DNSを構成する役割を果たし、マルチコンテナーセットアップの学習段階で役立ちます。 コンテナの外部からアクセスするのは簡単ではありませんが、コンテナのログファイルに表示され、それらのファイルがホストに依存しないボリュームに書き込まれると、コンテナの識別が容易になります。
CLI and Dockerfile:docker run --hostname=value
またはdocker run -h value
--name
と--hostname
はどちらもコンテナの識別に役立ちますが、コンテナに名前を付けることではない場合もあります。 むしろ、自分でやることを忘れずに、コンテナを自動的にクリーンアップすることです。
3 —終了時にコンテナを自動的に削除します
デバッグするときは、停止したコンテナが終了した後も持続することが役立ちます。 ログファイルなどのデータを保持し、コンテナの最終状態を調査できます。 ただし、コンテナを実行するときに、完了時に不要になっていることがわかっている場合があります。 この場合、--rm
フラグを使用して、終了時に自動的に削除できます。 これにより、物事をきれいに保つことが容易になります。
ただし、注意してください! Dockerボリュームを使用している場合、--rm
はすべてのvolumes NOT specified by nameを削除します。
CLIとDockerfile:
docker run --rm
これは、画像を作成していて、実行中のコンテナにアタッチする必要がある場合に非常に便利です。 周りを見回したい、そして再び使用するつもりのないコンテナでディスクをいっぱいにしたくない。
結論
docker run
、--name
、--hostname
、および--rm
のこれらの3つのフラグは、それぞれ独自の方法で、Dockerを学習するときに何が何であるかを簡単に知ることができます。 コンテナとdocker run
コマンドの操作について詳しくは、Working with Docker Containersガイドをご覧ください。