紹介
Dockerは、ソフトウェアアプリケーションに実行に必要なすべてが含まれたファイルシステムを提供するために使用される人気のあるコンテナ化ツールです。Dockerコンテナを使用すると、ソフトウェアが展開される場所に関係なく、そのランタイム環境が厳密に一貫しているため、ソフトウェアが同じように動作することが保証されます。
このチュートリアルでは、DockerイメージとDockerコンテナの関係の概要を簡単に説明し、その後、コンテナの実行、開始、停止、および削除方法について詳細に説明します。
概要
Dockerイメージは、Dockerコンテナを作成するための不活性なテンプレートと考えることができます。イメージは通常、ルートファイルシステムから始まり、順序付けられた読み取り専用レイヤーにファイルシステムの変更とそれに対応する実行パラメーターを追加します。通常のLinuxディストリビューションとは異なり、Dockerイメージには通常、アプリケーションを実行するために必要な最低限の要素しか含まれていません。イメージには状態がなく、変更されません。代わりに、それらはDockerコンテナの出発点を形成します。
イメージは、docker run
コマンドを使用して生き生きとしたものになります。このコマンドは、イメージの上に読み書き可能なレイヤーを追加してコンテナを作成します。この読み取り専用のレイヤーの組み合わせに読み書き可能なレイヤーが重ねられたものを、組み合わせファイルシステムと呼びます。実行中のコンテナ内の既存ファイルに変更が加えられると、ファイルは読み取り専用スペースから読み書き可能なレイヤーにコピーされ、変更が適用されます。読み書き可能レイヤー内のバージョンは元のファイルを隠しますが、削除はしません。読み書き可能レイヤー内の変更は、個々のコンテナインスタンス内にのみ存在します。コンテナが削除されると、変更は失われますが、それを保持する手順が取られていない限り。
Dockerコンテナの操作方法
コンテナとの作業
ステップ1: 2つのコンテナを作成する
次のdocker run
コマンドは、ベースのubuntu
イメージを使用して新しいコンテナを作成します。-t
はターミナルを提供し、-i
は対話的な操作を可能にします。 UbuntuベースイメージのDockerファイルでのデフォルトコマンド、bash
に依存します。これにより、シェルに移動します。
コマンドラインプロンプトが変更され、12文字のコンテナIDが続きます。
コンテナの/tmp
ディレクトリにテキストをエコーして変更を行い、それが正常に保存されたことをcat
を使用して確認します。
OutputExample1
次に、コンテナから退出しましょう。
Dockerコンテナは、発行されたコマンドが完了するとすぐに停止します。したがって、私たちがbashシェルを終了すると、コンテナが停止します。 docker ps
を実行すると、実行中のコンテナを表示するコマンドを見ることができません。
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
コンテナを表示するために-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
)、コンテナが作成されたとき(6分前
)、および実行されたコマンド(/bin/bash
)を表示します。出力にはまた、コンテナの状態(Exited
)と、その状態に入ったコンテナがどれくらい前であるか(6秒前
)が表示されます。コンテナがまだ実行中の場合、状態が「Up」であることが表示され、実行されてからどのくらい経過したかが続きます。
同じコマンドを再実行すると、完全に新しいコンテナが作成されます:
新しいコンテナであることがわかります。プロンプトのIDが異なり、Example1ファイルを探しても見つけることができません:
Outputcat: /tmp/Example1: No such file or directory
これにより、データが消えたように見えるかもしれませんが、それはそうではありません。私たちが2番目のコンテナを終了してみると、作成したファイルがある2番目のコンテナと最初のコンテナの両方がシステムにあることがわかります。
コンテナを再度リストアップすると、両方が表示されます。
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を置き換えてください:
再びコンテナのbashプロンプトにいます。以前に作成したファイルをcat
すると、それがまだそこにあることがわかります。
OutputExample1
今、コンテナから出ることができます:
この出力は、コンテナ内で行われた変更が停止して再開すると持続することを示しています。コンテンツが削除されるのはコンテナが削除されたときだけです。この例は、変更が個々のコンテナに制限されていることも示しています。2番目のコンテナを起動すると、イメージの元の状態が反映されます。
ステップ3: 両方のコンテナを削除する
私たちは2つのコンテナを作成しました。簡単なチュートリアルを削除して終了します。docker rm
コマンドは、停止したコンテナのみで動作し、1つ以上のコンテナの名前またはIDを指定できます。したがって、以下のように両方を削除できます:
Output11cc47339ee1
kickass_borg
両方のコンテナと、それらの中で行った変更はすべて消えてしまいました。
結論
私たちは、docker run
コマンドを詳しく見て、それが実行されるたびに新しいコンテナを自動的に作成する方法を見てきました。また、停止したコンテナを見つけて、起動し、それに接続する方法も見てきました。コンテナの管理についてさらに学びたい場合は、ガイド「Dockerコンテナの名前付け:初心者向けの3つのヒント」に興味があるかもしれません。
Source:
https://www.digitalocean.com/community/tutorials/working-with-docker-containers