Docker 学習: コンテナ コンテナの具体的な使用方法

Docker 学習: コンテナ コンテナの具体的な使用方法

コンテナは Docker のもう一つの中心的な概念です。

簡単に言えば、コンテナとは、独立して実行される 1 つまたは複数のアプリケーションとその動作環境です。同様に、仮想マシンは、シミュレートされたオペレーティング システム (実行環境とその他のシステム環境を提供) とその上で実行されるアプリケーションの完全なセットとして理解できます。

コンテナに対する主な操作は次のとおりです。

  • 作成する
  • 起動する
  • 停止
  • 輸入と輸出
  • 消去

コンテナを起動する

方法は2つあります。1つはイメージを元に新しいコンテナを作成して起動する方法、もう1つは停止状態のコンテナを再起動する方法です。
Docker コンテナは非常に軽量であるため、ユーザーはいつでもコンテナを削除したり新しいコンテナを作成したりできます。

作成して開始

必要なコマンドは主にdocker runです

これは、ローカルで /bin/echo 'hello world' を実行するのとほとんど区別がつきません。

次のコマンドは bash ターミナルを起動し、次のようなユーザー操作を可能にします。

docker run -t -i ubuntu:18.04 /bin/bash

-t オプションを使用すると、Docker は疑似 tty を割り当ててコンテナの標準入力にバインドしますが、-i オプションを使用するとコンテナの標準入力が開いたままになります。

では、docker run コマンドを使用してコンテナを作成して起動すると何が起こるでしょうか?

  1. 指定されたイメージがローカルに存在するかどうかを確認します。存在しない場合は、パブリック リポジトリからダウンロードして起動します。
  2. イメージを使用してコンテナを作成して起動する
  3. ファイルシステムを割り当て、読み取り専用イメージ層の外側に読み取り/書き込み層をマウントします。
  4. ホストの設定されたブリッジインターフェースからコンテナへの仮想インターフェースをブリッジする
  5. コンテナのアドレスプールからIPアドレスを構成する
  6. ユーザーが指定したアプリケーションを実行します
  7. 実行後、コンテナは終了する

したがって、bash を介してターミナルに入ると、実際には別のシステムに入ることになります。

終了したコンテナを起動する

docker container start コマンドを使用して、終了したコンテナを直接起動できます。

コンテナの中核は実行されるアプリケーションであり、アプリケーションを実行するために必要なリソースが必要です。これ以外にリソースはありません。擬似端末で ps または top を使用してプロセス情報を表示できます。

コンテナ内では指定された bash アプリケーションのみが実行中であることがわかります。この機能により、Docker のリソース使用率が非常に高くなり、真に軽量な仮想化が実現します。

バックグラウンド操作

多くの場合、コンテナはバックグラウンドで実行されますが、これを実現するには -d パラメータを追加できます。以下は 1 秒ごとに hello world を出力します。

docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world;sleep 1;done" 


-d パラメータを使用してコンテナを実行すると、コンテナはバックグラウンドで実行されます。

注意: コンテナが長時間実行されるかどうかは、docker run で指定されたコマンドに関連し、-d パラメータとは関係ありません。 -d パラメータを指定して起動すると、一意の ID が返されます。docker container ls コマンドを使用してコンテナ情報を表示することもできます。

コンテナの出力情報を取得するには、docker container logs コマンドを使用できます。

docker コンテナ ログ [コンテナ ID または名前]
こんにちは世界
こんにちは世界
こんにちは世界
. . .

コンテナの終了

実行中のコンテナを終了するには、docker container stop または docker stop container-id を使用できます。また、Docker コンテナ内で指定されたアプリケーションが終了すると、コンテナも自動的に終了します。

終了状態のコンテナは、docker container ls -a コマンドを使用して確認できます。例えば:

終了したコンテナは、docker container start コマンドを使用して再起動できます。

さらに、docker container restart コマンドは実行中のコンテナを終了してから再起動します。

コンテナに入る

-d パラメータを使用すると、コンテナは起動後にバックグラウンドに入ります。

場合によっては、docker attach コマンドや docker exec コマンドなどを使用して、コンテナーに入って操作を実行する必要があります。以下に説明する理由により、docker exec コマンドを使用することをお勧めします。

アタッチコマンド

注意: この stdin を終了すると、コンテナは停止します。

実行コマンド

docker exec には複数のパラメータを続けることができますが、ここでは主に -i -t パラメータについて説明します。

-i パラメータのみを使用する場合、疑似端末が割り当てられないため、インターフェイスには使い慣れた Linux コマンド プロンプトはありませんが、コマンド実行結果は返すことができます。

-i -t パラメータを一緒に使用すると、使い慣れた Linux コマンド プロンプトが表示されます。

この stdin から終了すると、コンテナは停止されません。このため、docker exec を使用することをお勧めします。

コンテナのエクスポートとインポート

輸出コンテナ

ローカル コンテナをエクスポートする場合は、docker export コマンドを使用できます。

これにより、コンテナのスナップショットがローカル ファイルにエクスポートされます。

コンテナのインポ​​ート

docker import を使用して、コンテナのスナップショット ファイルをイメージとしてインポートできます。次に例を示します。

cat ubuntu.tar | docker import - test/ubuntu:v1.0 

コンテナの削除

終了状態のコンテナを削除するには、docker container rm または docker rm container-id を使用できます。例えば:

注意: コンテナを削除するにはコンテナを停止する必要があります

終了したコンテナをすべてクリーンアップする

docker container ls -a コマンドを使用すると、終了状態のものも含め、作成されたすべてのコンテナが表示されます。コンテナが多すぎると、1つずつ削除するのが面倒になる場合があります。終了状態のすべてのコンテナをクリーンアップするには、次のコマンドを使用します。

$ dockerコンテナのプルーン

この操作は非常に危険なので、注意して使用してください。上記はDockerコンテナに関する一般的な操作です。

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

以下もご興味があるかもしれません:
  • さようなら Docker: 5 分で Containerd に移行する方法
  • Dockerはコンテナにポートを動的に公開します
  • Dockerコンテナに入る方法と出る方法
  • DockerコンテナのIPアドレスを取得する方法の詳細な説明
  • 実行中のコンテナポートを動的にマッピングするDockerの詳細な説明
  • Dockerは異常なコンテナ操作を排除する

<<:  Mac MySQL のルートパスワードをリセットするチュートリアル

>>:  WeChatアプレットはユーザーログインモジュールサーバーの構築を実装します

推薦する

Linux で特殊文字のファイル名やディレクトリを削除する方法

inode番号でファイルを削除するまずls -iを使用して、削除するファイルのinode番号を見つけ...

Linux リモート開発に vs2019 を使用する方法

通常、Linux プログラムを開発する場合、次の 2 つのオプションがあります。 Linux上で直接...

MySQL 5.7.16 無料インストール版のインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 5.7.16のインストールと設定方法を記録します。具体的な内容は以下のとおり...

CentOS 7.4 64 ビット版に MySQL 8.0 をインストールして設定するための詳細な手順

ステップ1: MySQL YUMソースを取得するMySQLの公式サイトにアクセスして、RPMパッケー...

Reactでaxiosを使用してリクエストを送信する一般的な方法

目次Reactにaxios依存関係をインストールして導入するGETリクエストにaxiosを使用するa...

Swiper+echartsは複数のダッシュボードの左右スクロール効果を実現します

この記事では、ダッシュボードの左右スクロール効果を実現するためのスワイパー+echartsの具体的な...

jQueryをベースにカルーセル効果を実現する

この記事では、カルーセルマップの効果を実現するためのjQueryの具体的なコードを参考までに共有しま...

Linux で仮想コンソール セッションをロックする方法

共有システムで作業しているときは、他のユーザーが自分のコンソールを覗き込んで、自分が何をしているか見...

Vue ショッピングカートのケーススタディ

目次1. ショッピングカートの例2. コードの実装3. まとめ1. ショッピングカートの例一連の学習...

Nginx のアクセス制御とパラメータ調整方法

Nginx グローバル変数Nginx には、$variable 名を通じて使用できるグローバル変数が...

Axios を使用して Vue2 がリクエストを開始する詳細なプロセス記録

目次序文Axiosのインストールと設定シンプルなGETリクエストを開始するPOSTリクエストを行うシ...

MySQL全文検索の使用例

目次1. 環境整備2. データの準備3. ショーを始める4. 単語分割エンジン要約する参考文献1. ...

VueとElementUIを組み合わせたスキン変更ソリューション

目次前面に書かれた解決策 1: グローバル スタイル オーバーライドを使用する (フロントエンドに共...

CSS3 で背景ぼかしを実現する 3 つの方法 (要約)

1. 通常の背景ぼかしコード: <スタイル> html, 体 { 幅: 100%; 高...