【Docker】コンテナのライフサイクルをdockerで実施

コンテナのライフサイクルをdockerコマンドで実施

  1. dockerのイメージを取得する
  2. イメージからdockerコンテナを作成する
  3. コンテナを起動する
  4. コンテナを停止
  5. コンテナの削除
  6. イメージの削除

1. dockerのイメージを取得する

ここではCentOS7のイメージを取得したいと思います。

docker pull イメージ:タグ

リモートのリポジトリからイメージをpullします。ローカルへpullしておく事で、コンテナの起動を短くできます。(実行前に必ずローカルにイメージがあるかを確認して、あればローカルのイメージを使うためです。)

<<結果>>

プルされたイメージが存在するか確認

docker images

このコマンドでプルされたローカルに存在するイメージのリストを確認できます。

<<結果>>

2. イメージからdockerコンテナを作成する

docker run コマンドを実行するとコンテナを作成して、起動までしてくれますが、今回はコンテナを作る、起動するを分けて実行したいと思います。

docker create IMAGE

上記コマンドでdockerコンテナが作成できます。今回はライフサイクルを確認することが目的なので、細かくオプションは調べていませんが、コンテナの名前を指定する場合は以下のようにオプションをつけて実行してください

docker create –name NAME IMAGE
<<結果>>
docker ps -a

コンテナを作っただけで起動はしていないのでオプションで「-a」を指定します。psだけでは実行中のコンテナしか表示してくれず、-aオプションをつけること、起動していないコンテナも含めてすべてを表示してくれます。

<<結果>>

先程createしたときに指定した名前(「sample-container」)でコンテナが作成されていることがわかります。

3. コンテナを起動する

docker start CONTAINER ID
docker start NAME

これはどちらでも大丈夫です。

コンテナが起動したかどうかを確認する
<<結果>>

statusを見てもらうと10 seconds ago となっており、10秒前に起動できたことが確認できました。docker コンテナを作成したときに特にオプションを指定していないため、コンテナ用のレイヤはただ、centos7を起動してすぐに終了してしまいます。もし、対話型のcentos7を動かしたいときは以下のようにしてコンテナを作成してください

オプション 説明
-i キーボード入力をコンテナの標準入力へつなぎ、キーボード入力をコンテナ上のシェルなどへ送れるようにする
-t 擬似端末デバイスを結びつけ、ターミナルによる対話型動作を可能にする

4. コンテナを停止する

docker stop CONTAINER ID

現在起動中のコンテナはこのコマンドで停止します

まずは起動中のコンテナを確認します。(事前に対話型でcentos7)

<<結果>>

コンテナを停止する。

<<結果>>

起動中のコンテナがなくなったことが確認できました。ちなみに停止したコンテナはdocker startで再度起動することができます。

4. コンテナの削除

docker rm CONTAINER ID

上記コマンドで作成されたコンテナが削除されます。

<<結果>>

5. イメージの削除

docker rmi IMAGE ID

このとき、他のコンテナでこのイメージを使っている場合、unable to deleteとなる。

その場合は、エラーメッセージにコンテナIDが表示されているため、そのコンテナIDを削除して再度試してみてほしい

まとめ

この記事を書き始めて、書き終わるまでに少し時間がかかってしまった。正直、コンテナを作るときのレイヤのイメージがまだ不十分な気がしているが、今回はコンテナイメージをdocker hubからpullし、コンテナ作成、開始、停止、コンテナ削除、コンテナイメージ削除までを一通り行った。『イメージはコンテナをまたがって共有される』『コンテナは作成時に指定したレイヤーで作られる』が今回は自分にとって勉強になったポイントだと思う。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です