Dockerコンテナを閉じずに終了する方法の詳細な説明

Dockerコンテナを閉じずに終了する方法の詳細な説明

Docker コンテナに入った後、コンテナを終了すると、コンテナは Exited 状態に変わります。では、コンテナをシャットダウンせずにコンテナを終了するにはどうすればよいでしょうか。

コンテナを閉じずに通常通り終了する場合は、Ctrl+P+Q を押してコンテナを終了します。これは非常に重要なので、覚えておいてください。

次の例では、コンテナを閉じずに終了します。

[root@localhost ~]# docker アタッチ c600c4519fc8
[root@c600c4519fc8 /]# 終了
出口
[root@localhost ~]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
c600c4519fc8 centos "/bin/bash" 3時間前 終了 (0) 1秒前 pensive_jackson
5a7a0d694651 busybox "sh" 20 時間前 終了 (0) 20 時間前 hungry_vaughan
4b0296d18849 hello-world "/hello" 46 時間前 終了 (0) 46 時間前 hopeful_yonath
[root@localhost ~]# docker start pensive_jackson
物思いにふけるジャクソン
[root@localhost ~]# docker アタッチ c600c4519fc8

Ctrl + P + Q 

[root@c600c4519fc8 /]# エスケープシーケンスを読み取ります
[root@localhost ~]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
c600c4519fc8 centos "/bin/bash" 3 時間前 22 秒前 pensive_jackson
5a7a0d694651 busybox "sh" 20 時間前 終了 (0) 20 時間前 hungry_vaughan
4b0296d18849 hello-world "/hello" 46 時間前 終了 (0) 46 時間前 hopeful_yonath

実際には、コンテナを起動するときに設定し、-d パラメータを追加してコンテナを起動することができます。もちろん、このコマンドは新しいコンテナの起動に限定されており、閉じたコンテナを起動することはできません。

ヒント1

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

次の例では、docker -dを使用してコンテナを起動し、終了します。

[root@localhost ~]# docker run -i -t -d centos /bin/bash
8521b11d5d99535d4cb0080adc5a58a4dd018ecd0751d9945f7da7ab01bec330
[root@localhost ~]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
8521b11d5d99 centos "/bin/bash" 4秒前 4秒前 イーガー_goldwasser
c600c4519fc8 centos "/bin/bash" 3 時間前 終了 (0) 28 秒前 pensive_jackson
5a7a0d694651 busybox "sh" 20 時間前 終了 (0) 20 時間前 hungry_vaughan
4b0296d18849 hello-world "/hello" 46 時間前 終了 (0) 46 時間前 hopeful_yonath
[root@localhost ~]# docker アタッチ 8
[ルート@8521b11d5d99 /]# uname -r
3.10.0-514.el7.x86_64
[root@8521b11d5d99 /]# 終了
出口
[root@localhost ~]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
8521b11d5d99 centos "/bin/bash" 2 分前 終了 (0) 2 秒前 early_goldwasser
c600c4519fc8 centos "/bin/bash" 3 時間前 終了 (0) 2 分前 pensive_jackson
5a7a0d694651 busybox "sh" 20 時間前 終了 (0) 20 時間前 hungry_vaughan
4b0296d18849 hello-world "/hello" 46 時間前 終了 (0) 46 時間前 hopeful_yonath

ここで、-d コマンドで終了した後もコンテナーがまだ停止していることに気付くかもしれません。実践的な友人は、docker run -d でコンテナーを起動しただけでも停止していることに気付くかもしれません。

ここで理解する必要があるのは、コンテナの動作メカニズムです。Docker コンテナはバックグラウンドで実行され、フォアグラウンド プロセスが必要です。ここでは、コンテナが -d の起動後も存続できるように、コンテナでフォアグラウンド プログラムを実行させます。

[root@localhost ~]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
c600c4519fc8 centos "/bin/bash" 3 時間前 終了 (0) 4 分前 pensive_jackson
5a7a0d694651 busybox "sh" 21 時間前 終了 (0) 21 時間前 hungry_vaughan
4b0296d18849 hello-world "/hello" 47 時間前 終了 (0) 47 時間前 hopeful_yonath
[root@localhost ~]# docker run -d centos /bin/bash -c "nohup ping -i 1000 www.baidu.com"
8aa19c9604382bc019797ccda831ae1bcebd81d86380b6040d636e03000b440a
[root@localhost ~]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
8aa19c960438 centos "/bin/bash -c 'nohup..." 2秒前 2秒前 adoring_wing
c600c4519fc8 centos "/bin/bash" 3 時間前 終了 (0) 5 分前 pensive_jackson
5a7a0d694651 busybox "sh" 21 時間前 終了 (0) 21 時間前 hungry_vaughan
4b0296d18849 hello-world "/hello" 47 時間前 終了 (0) 47 時間前 hopeful_yonath

私は、1000 秒ごとに Baidu に ping するプロセスをバックグラウンドで実行するために nohup を使用しています。また、「while true; do echo hello world; sleep 1; done」を使用して、hello world を無限に出力することもできます。

また、バックグラウンドでプロセスが動いていたとしても、コンテナに入って exit と入力するとコンテナは終了してしまいますので、ご注意ください。

私の意見では、Ctrl+P+Q が依然として最良の方法です。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Jenkins の紹介と Docker で Jenkins をデプロイする方法
  • dockerコンテナがIP経由でホストマシンにアクセスできない問題を解決する方法の詳細な説明
  • DockerでNginxサーバーを作成する方法
  • Docker で nginx の https を設定する方法
  • Dockerコンテナの紹介
  • Docker+Jenkins+Gitlab+Djangoアプリケーションデプロイ実践の詳細な説明
  • Docker 入門インストールチュートリアル (初心者版)
  • yum を使用して rpm と関連する依存関係をダウンロードして、docker をオフラインでインストールします。
  • Dockerはbusyboxを使用してベースイメージを作成します
  • Docker の詳細なイラスト

<<:  ReactとAntdのFormコンポーネントを組み合わせてログイン機能を実装する方法を詳しく説明します

>>:  Mysqlリモート接続構成を実装する2つの方法

推薦する

MySQL 5.7.18 アーカイブ圧縮版のインストールチュートリアル

この記事では、MySQL 5.7.18アーカイブ圧縮版をインストールする具体的な方法を参考までに紹介...

nginxとバックエンドポート間の競合の解決策

質問: Alice 管理システムを開発しているときに、すべてのバックエンド インターフェイスが最初の...

Vueは虫眼鏡付きの検索ボックスを実装します

この記事では、Vueを使用して虫眼鏡付きの検索ボックスを実装する方法を紹介します。具体的な内容は次の...

Vueはタブルーティング切り替えコンポーネントのメソッド例を実装します

序文この記事では、vue に付属している vue-router.js ルーティングを使用してページン...

CSS3はシームレスなスクロールと手ぶれ防止を実現します

質問画像とテキストのシームレスなスクロールは、一般的に携帯電話では良い効果をもたらしますが、一部のモ...

Linux で Nginx 1.16.0 をインストールするための詳細なチュートリアル

最近 Linux をいじっていたので、nginx の新しいバージョンをインストールしたいと思いました...

MySQLで現在の時間間隔の前日のデータをクエリする

1. 背景実際のプロジェクトでは、分散スケジュールされたタスク実行の状況に遭遇することがあります。ス...

Linux netstatコマンドの詳細な説明

目次Linux netstat コマンド1. TCP接続ステータスの詳細な説明2. コマンド形式3....

CSSページ下部固定を実現する8つの方法の詳細な説明

ページを書いているときに、ページの内容が小さくてフッターがページの真ん中に留まってしまうといった状況...

MySQLのマスタースレーブレプリケーションと読み取り書き込み分離を理解するための記事

目次導入1. MySQL マスタースレーブレプリケーション1. MySQLレプリケーションタイプ2....

Chrome デベロッパー ツールの詳細な紹介 - タイムライン

1. 概要ユーザーは、アクセスする Web アプリケーションがインタラクティブでスムーズに実行される...

MySQL 8.0.16 Win10 zip バージョンのインストールと設定のグラフィック チュートリアル

この記事では、MySQL 8.0.16 Win10 zip版のインストールと設定のグラフィックチュー...

チャットバブル効果を実現するCSS

1. レンダリングJD効果シミュレーション効果 2. 原則高さと幅が0のボックスを用意しますこのボ...

SQL重複排除方法の概要

SQL を使用してデータを抽出する場合、テーブル内で重複した値に遭遇することがよくあります。たとえ...

純粋な CSS3 で蝶が羽ばたく様子を再現する例

純粋なCSS3で蝶が羽ばたく様子を再現。まずはその効果をご覧ください どうですか?効果はかなりいいで...