docker の run コマンドの t と d の違いは何ですか?

WBOY
リリース: 2022-01-28 15:38:18
オリジナル
8198 人が閲覧しました

docker では、新しいコンテナを作成してコマンドを実行するために run コマンドが使用されます。パラメータ "-t" を設定すると疑似入力端子をコンテナに再割り当てでき、パラメータ "-d" を設定すると、コンテナをバックグラウンドで実行し、コンテナ ID を返します。

docker の run コマンドの t と d の違いは何ですか?

このチュートリアルの動作環境: linux7.3 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。

docker の run コマンドの t と d の違いは何ですか

docker run: 新しいコンテナーを作成してコマンドを実行します

Syntax

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
ログイン後にコピー

OPTIONS description:

  • -a stdin: 標準入力および出力コンテンツ タイプ、オプションの STDIN/STDOUT/STDERR を指定します;

  • -d : バックグラウンドでコンテナを実行し、コンテナ ID を返します;

  • -i: 対話モードでコンテナを実行し、通常は -t とともに使用します;

  • -P: ランダム ポート マッピング。コンテナの内部ポートはホストのポートにランダムにマッピングされます。

  • -p: ポート マッピングを指定します。形式は次のとおりです: ホスト (ホスト) ポート:container port

  • -t: 疑似入力ターミナルをコンテナに再割り当てし、通常 -i;

  • --name= と一緒に使用します。 "nginx-lb": コンテナーの名前を指定します;

  • --dns 8.8.8.8: コンテナーによって使用される DNS サーバーを指定します (デフォルトではホストと同じです)。

  • -- dns-search example.com: デフォルトでホストと一致するコンテナ DNS 検索ドメイン名を指定します;

  • -h "mars": コンテナーのホスト名を指定します;

  • -e username="ritchie": 環境変数を設定します;

  • - -env-file=[]: 指定されたファイルから環境変数を読み取ります;

  • --cpuset="0-2" または --cpuset="0,1,2":実行する指定された CPU にコンテナをバインドします;

  • -m :コンテナによって使用される最大メモリを設定します;

  • --net= "bridge": コンテナのネットワーク接続タイプを指定します。ブリッジ/ホスト/なし/コンテナの 4 種類をサポートします。

  • --link=[]: 別のコンテナへのリンクを追加します。 ;

  • --expose=[]: ポートまたはポートのグループを開きます ;

  • --ボリューム、-v: バインドvolume

例:「バックグラウンドでミラーを実行したい」場合、次のコマンド

docker run -d --name server somebody:dockerfile
ログイン後にコピー

を実行するときに、操作が成功したかどうかを確認します。 docker ps を実行しましたが、正常に実行されていません。どのような状況ですか? ?バックグラウンドで実行するには -d パラメータを使用する必要はないでしょうか?実際、主な理由は、

CMD ["/bin/bash"]
ログイン後にコピー

と同様に、このイメージの最後に CMD が追加されている可能性があることです。つまり、バックグラウンドで実行すると、このイメージによって作成されたコンテナーが最初に /bin を実行します。 /bash、これはバックグラウンドで実行する場合を意味します。実行中 (-d)、シェルはすぐに終了します。そのため、コマンドがフォアグラウンドで実行されていない限り、コンテナーはすぐに停止します

解決策

-d から -i または -t

docker run -i -d images:tags
docker run -t -d images:tags
docker run -itd images:tags
ログイン後にコピー
# までに疑似 "tty n" を指定します。 ## コマンドに tail -f /dev/null を追加します。

これにより、メインコマンドがバックグラウンドで実行されていても、tail はフォアグラウンドで実行され続けるため、コンテナは停止しません。

docker run -d centos tail -f /dev/null
ログイン後にコピー

同じことが他の状況 (コンテナーに入る) にも当てはまります。Docker は、シェルのように動作させるために -i と -t を使用することを公式に推奨しています。

docker run -i -t <images:tags>
ログイン後にコピー
推奨学習: 「

docker ビデオ チュートリアル

以上がdocker の run コマンドの t と d の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート