序章

Dockerは、実行に必要なすべてのものを含むファイルシステムをソフトウェアアプリケーションに提供するために使用される一般的なコンテナ化ツールです。 Dockerコンテナーを使用すると、ランタイム環境が容赦なく一貫しているため、ソフトウェアがデプロイされている場所に関係なく、ソフトウェアが同じように動作することが保証されます。

このチュートリアルでは、DockerイメージとDockerコンテナーの関係の概要を説明します。 次に、コンテナの実行、開始、停止、および削除の方法について詳しく説明します。

概要

Dockerイメージは、Dockerコンテナーの作成に使用される不活性なテンプレートと考えることができます。 イメージは通常、ルートファイルシステムで始まり、ファイルシステムの変更とそれに対応する実行パラメーターを順序付けられた読み取り専用レイヤーに追加します。 通常のLinuxディストリビューションとは異なり、Dockerイメージには通常、アプリケーションの実行に必要な最低限の要素のみが含まれています。 画像には状態がなく、変化しません。 むしろ、それらはDockerコンテナーの開始点を形成します。

画像は docker run コマンド。イメージの上に読み取り/書き込みレイヤーを追加することにより、containerを作成します。 この読み取り専用レイヤーと読み取り/書き込みレイヤーの組み合わせは、ユニオンファイルシステムと呼ばれます。 実行中のコンテナー内の既存のファイルに変更が加えられると、ファイルは読み取り専用スペースから読み取り/書き込みレイヤーにコピーされ、そこで変更が適用されます。 読み取り/書き込みレイヤーのバージョンは、元のファイルを非表示にしますが、削除しません。 読み取り/書き込みレイヤーの変更は、個々のコンテナーインスタンス内にのみ存在します。 コンテナが削除されると、それらを保持するための手順を実行しない限り、変更はすべて失われます。

コンテナの操作

使用するたびに docker run コマンドを実行すると、指定したイメージから新しいコンテナが作成されます。 これは混乱の原因となる可能性があるため、いくつかの例を見てみましょう。

ステップ1:2つのコンテナーを作成する

以下 docker run コマンドは、ベースを使用して新しいコンテナを作成します ubuntu 画像。 -t 私たちにターミナルを与えます、そして -i 私たちがそれと相互作用することを可能にします。 UbuntuベースイメージのDockerファイルのデフォルトコマンドに依存します。 bash、シェルにドロップします。

  1. docker run -ti ubuntu

コマンドラインプロンプトが変わり、rootユーザーとしてコンテナ内にいることを示し、その後に12文字のコンテナIDが続きます。

コンテナのテキストにエコーすることで変更を加えます /tmp ディレクトリ、次に使用する cat 正常に保存されたことを確認します。

  1. echo "Example1" > /tmp/Example1.txt
  2. cat /tmp/Example1.txt
Output
Example1

それでは、コンテナを終了しましょう。

  1. exit

Dockerコンテナーは、発行したコマンドが完了するとすぐに実行を停止するため、bashシェルを終了するとコンテナーが停止しました。 実行するとdocker ps、実行中のコンテナを表示するコマンド、私たちのものは表示されません。

  1. docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

追加すると -a すべてのコンテナが停止または実行中であることを示すフラグが表示されると、コンテナがリストに表示されます。

  1. docker ps -a
Output
CONTAINER 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」に続いて、実行されていた時間が表示されます。

同じコマンドを再実行すると、まったく新しいコンテナが作成されます。

  1. docker run -ti ubuntu

コマンドプロンプトのIDが異なるため、新しいコンテナであることがわかります。また、Example1ファイルを検索しても、次のファイルは見つかりません。

  1. cat /tmp/Example1
Output
cat: /tmp/Example1: No such file or directory

これにより、データが消えたように見える場合がありますが、そうではありません。 2番目のコンテナーを終了して、2番目のコンテナーと、作成したファイルを含む最初のコンテナーの両方がシステム上にあることを確認します。

  1. exit

コンテナを再度リストすると、両方が表示されます。

  1. docker ps -a
Output
CONTAINER 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に置き換えてください。

  1. docker start -ai 11cc47339ee1

コンテナのbashプロンプトにもう一度、そして cat 以前に作成したファイルは、まだそこにあります。

  1. cat /tmp/Example1.txt
Output
Example1

これでコンテナを終了できます。

  1. exit

この出力は、コンテナー内で行われた変更が、コンテナーを停止および開始するまで持続することを示しています。 コンテンツが削除されるのは、コンテナが削除されたときだけです。 この例は、変更が個々のコンテナに限定されていることも示しています。 2番目のコンテナーを開始すると、イメージの元の状態が反映されました。

ステップ3:両方のコンテナーを削除する

2つのコンテナを作成し、それらを削除して簡単なチュートリアルを終了します。 The docker rm 停止したコンテナーでのみ機能するコマンドを使用すると、1つ以上のコンテナーの名前またはIDを指定できるため、次のようにして両方を削除できます。

  1. docker rm 11cc47339ee1 kickass_borg
Output
11cc47339ee1 kickass_borg

両方のコンテナ、およびそれらの内部で行った変更はすべてなくなりました。

結論

私たちは詳細に見てきました docker run 実行するたびに新しいコンテナが自動的に作成される方法を確認するコマンド。 また、停止したコンテナを見つけて起動し、接続する方法についても説明しました。 コンテナーの管理について詳しく知りたい場合は、ガイド「 Dockerコンテナーの命名:初心者のための3つのヒント」に興味があるかもしれません。