Dockerコンテナの操作方法

紹介

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

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

概要

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

イメージは、docker runコマンドを使用して生き生きとしたものになります。このコマンドは、イメージの上に読み書き可能なレイヤーを追加してコンテナを作成します。この読み取り専用のレイヤーの組み合わせに読み書き可能なレイヤーが重ねられたものを、組み合わせファイルシステムと呼びます。実行中のコンテナ内の既存ファイルに変更が加えられると、ファイルは読み取り専用スペースから読み書き可能なレイヤーにコピーされ、変更が適用されます。読み書き可能レイヤー内のバージョンは元のファイルを隠しますが、削除はしません。読み書き可能レイヤー内の変更は、個々のコンテナインスタンス内にのみ存在します。コンテナが削除されると、変更は失われますが、それを保持する手順が取られていない限り。

Dockerコンテナの操作方法

  1. 2つのDockerコンテナを作成する
  2. 最初のコンテナを再起動する
  3. 両方のコンテナを削除する

コンテナとの作業

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

次のdocker runコマンドは、ベースのubuntuイメージを使用して新しいコンテナを作成します。-tはターミナルを提供し、-iは対話的な操作を可能にします。 UbuntuベースイメージのDockerファイルでのデフォルトコマンド、bashに依存します。これにより、シェルに移動します。

  1. docker run -ti ubuntu

コマンドラインプロンプトが変更され、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)、コンテナが作成されたとき(6分前)、および実行されたコマンド(/bin/bash)を表示します。出力にはまた、コンテナの状態(Exited)と、その状態に入ったコンテナがどれくらい前であるか(6秒前)が表示されます。コンテナがまだ実行中の場合、状態が「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つのコンテナを作成しました。簡単なチュートリアルを削除して終了します。docker rmコマンドは、停止したコンテナのみで動作し、1つ以上のコンテナの名前またはIDを指定できます。したがって、以下のように両方を削除できます:

  1. docker rm 11cc47339ee1 kickass_borg
Output
11cc47339ee1 kickass_borg

両方のコンテナと、それらの中で行った変更はすべて消えてしまいました。

結論

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

Source:
https://www.digitalocean.com/community/tutorials/working-with-docker-containers