Dockerコンテナの操作
序章
Dockerは、実行に必要なすべてのものを含むファイルシステムをソフトウェアアプリケーションに提供するために使用される一般的なコンテナ化ツールです。 Dockerコンテナーを使用すると、ランタイム環境が容赦なく一貫しているため、ソフトウェアがデプロイされている場所に関係なく、ソフトウェアが同じように動作することが保証されます。
このチュートリアルでは、DockerイメージとDockerコンテナーの関係の概要を説明します。 次に、コンテナの実行、開始、停止、および削除の方法について詳しく説明します。
概要
Dockerイメージは、Dockerコンテナーの作成に使用される不活性なテンプレートと考えることができます。 イメージは通常、ルートファイルシステムで始まり、ファイルシステムの変更とそれに対応する実行パラメーターを順序付けられた読み取り専用レイヤーに追加します。 通常のLinuxディストリビューションとは異なり、Dockerイメージには通常、アプリケーションの実行に必要な最低限の要素のみが含まれています。 画像には状態がなく、変化しません。 むしろ、それらはDockerコンテナーの開始点を形成します。
画像は docker run
コマンド。イメージの上に読み取り/書き込みレイヤーを追加することにより、containerを作成します。 この読み取り専用レイヤーと読み取り/書き込みレイヤーの組み合わせは、ユニオンファイルシステムと呼ばれます。 実行中のコンテナー内の既存のファイルに変更が加えられると、ファイルは読み取り専用スペースから読み取り/書き込みレイヤーにコピーされ、そこで変更が適用されます。 読み取り/書き込みレイヤーのバージョンは、元のファイルを非表示にしますが、削除しません。 読み取り/書き込みレイヤーの変更は、個々のコンテナーインスタンス内にのみ存在します。 コンテナが削除されると、それらを保持するための手順を実行しない限り、変更はすべて失われます。
コンテナの操作
使用するたびに docker run
コマンドを実行すると、指定したイメージから新しいコンテナが作成されます。 これは混乱の原因となる可能性があるため、いくつかの例を見てみましょう。
ステップ1:2つのコンテナーを作成する
以下 docker run
コマンドは、ベースを使用して新しいコンテナを作成します ubuntu
画像。 -t
私たちにターミナルを与えます、そして -i
私たちがそれと相互作用することを可能にします。 UbuntuベースイメージのDockerファイルのデフォルトコマンドに依存します。 bash
、シェルにドロップします。
- docker run -ti ubuntu
コマンドラインプロンプトが変わり、rootユーザーとしてコンテナ内にいることを示し、その後に12文字のコンテナIDが続きます。
-
コンテナのテキストにエコーすることで変更を加えます /tmp
ディレクトリ、次に使用する cat
正常に保存されたことを確認します。
- echo "Example1" > /tmp/Example1.txt
- cat /tmp/Example1.txt
OutputExample1
それでは、コンテナを終了しましょう。
- exit
Dockerコンテナーは、発行したコマンドが完了するとすぐに実行を停止するため、bashシェルを終了するとコンテナーが停止しました。 実行するとdocker ps
、実行中のコンテナを表示するコマンド、私たちのものは表示されません。
- docker ps
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
追加すると -a
すべてのコンテナが停止または実行中であることを示すフラグが表示されると、コンテナがリストに表示されます。
- docker ps -a
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11cc47339ee1 ubuntu "/bin/bash" 6 minutes ago Exited (127) 8 seconds ago small_sinoussi
コンテナが作成されると、コンテナIDとランダムに生成された名前が付けられました。 この場合、11cc47339ee1はコンテナIDであり、 small_sinoussi
ランダムに生成された名前です。 ps -a
これらの値と、コンテナが構築されたイメージを示しています(ubuntu
)、コンテナが作成されたとき(six minutes ago
)、およびその中で実行されたコマンド(/bin/bash
). 出力には、コンテナのステータスも表示されます(Exited
)そしてどのくらい前にコンテナがその状態に入ったか(6 seconds ago
). コンテナがまだ実行中の場合は、ステータス「Up」に続いて、実行されていた時間が表示されます。
同じコマンドを再実行すると、まったく新しいコンテナが作成されます。
- docker run -ti ubuntu
コマンドプロンプトのIDが異なるため、新しいコンテナであることがわかります。また、Example1ファイルを検索しても、次のファイルは見つかりません。
- cat /tmp/Example1
Outputcat: /tmp/Example1: No such file or directory
これにより、データが消えたように見える場合がありますが、そうではありません。 2番目のコンテナーを終了して、2番目のコンテナーと、作成したファイルを含む最初のコンテナーの両方がシステム上にあることを確認します。
- exit
コンテナを再度リストすると、両方が表示されます。
- docker ps -a
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e4341887b69 ubuntu "/bin/bash" About a minute ago Exited (1) 6 seconds ago kickass_borg
11cc47339ee1 ubuntu "/bin/bash" 13 minutes ago Exited (127) 6 minutes ago small_sinoussi
ステップ2:最初のコンテナを再起動する
既存のコンテナを再起動するには、 start
とのコマンド -a
それに添付するフラグと -i
フラグを立ててインタラクティブにし、その後にコンテナIDまたは名前を付けます。 以下のコマンドで、必ずコンテナのIDに置き換えてください。
- docker start -ai 11cc47339ee1
コンテナのbashプロンプトにもう一度、そして cat
以前に作成したファイルは、まだそこにあります。
- cat /tmp/Example1.txt
OutputExample1
これでコンテナを終了できます。
- exit
この出力は、コンテナー内で行われた変更が、コンテナーを停止および開始するまで持続することを示しています。 コンテンツが削除されるのは、コンテナが削除されたときだけです。 この例は、変更が個々のコンテナに限定されていることも示しています。 2番目のコンテナーを開始すると、イメージの元の状態が反映されました。
ステップ3:両方のコンテナーを削除する
2つのコンテナを作成し、それらを削除して簡単なチュートリアルを終了します。 The docker rm
停止したコンテナーでのみ機能するコマンドを使用すると、1つ以上のコンテナーの名前またはIDを指定できるため、次のようにして両方を削除できます。
- docker rm 11cc47339ee1 kickass_borg
Output11cc47339ee1
kickass_borg
両方のコンテナ、およびそれらの内部で行った変更はすべてなくなりました。
結論
私たちは詳細に見てきました docker run
実行するたびに新しいコンテナが自動的に作成される方法を確認するコマンド。 また、停止したコンテナを見つけて起動し、接続する方法についても説明しました。 コンテナーの管理について詳しく知りたい場合は、ガイド「 Dockerコンテナーの命名:初心者のための3つのヒント」に興味があるかもしれません。