コンテナのライフサイクルとイメージの作成コンテナのライフサイクル今回は、コンテナ内部のリソースがどのように扱われているのか、確認してみます。その前に、ここでコンテナのライフサイクルについてまとめます。Dockerコンテナは「スナップショット」とよばれるイメージファイルとしてその状態を保持しています。Dockerイメージは「ファイルシステム全体の状態を保持したスナップショット」であり、runコマンドでそのスナップショットをコンテナとして再現しています。起動したコンテナはstop中も状態保持されていますが、rmするとスナップショットごと破棄されます。コンテナに内部変更を行いそれを残したい場合には、「新たなイメージとして保存」する必要があります。コンテナ内部のリソースを編集するでは実際にコンテナに内部変更を加えながら、状態を確認していきます。コンテナイメージから、httpdコンテナを立ち上げます。「-p」は"ポートの指定(ホスト8080番ポートへの通信を、コンテナ80番ポートへ転送)"となります。起動したらpsコマンドで、httpdコンテナのIDを確認します。relaxed_mcclintock現在バックグラウンドで起動している状態ですので、execコマンドでコンテナの内部に入ります(指定したコンテナの中でbashプロセスを実行する)。/bin/bash次にWebページを編集するのですが、現在の状態ではコンテナ上にエディタがインストールされていないので、先にインストールを行っておきます。vimエディタの準備ができたら、index.htmlを以下(黄色字の内容)の様に編集してみます。working!</h1></body></html>編集を保存し、httpdを再起動します。restartWebブラウザでページを確認すると、編集内容で更新されているはずです。この編集内容は「このコンテナが生きている間だけ」有効なものであり、コンテナをrmコマンドで破棄してしまうと、先ほどの編集内容(&インストールしたエディタ)も消失します。コンテナイメージをコミットする先ほどの変更済みの「httpd」コンテナを新たなコンテナイメージとして保存してみます。以下の様に「保存したいコンテナID、「保存イメージ名:タグ」を指定してcommitコマンドを発行します。httpd_test:0.0.1imagesコマンドでコンテナイメージを確認すると、「httpd_test」という名前で新しいコンテナイメージが作成されています。1.84kBでは一旦、現在起動中の「httpd」をrmで破棄してから、再度runしてWebページを確認してみます。works!」が表示されます。次に「httpd」をstopして、「httpd_test」をrunしてみます。このコンテナイメージはタグを付与しているので、以下の様に実行します。working!」が表示されます。変更した内容でイメージ化(永続化)することができました。今回はコンテナのライフサイクルの解説と、コンテナイメージの内部変更を永続化するところまででした。次回はDockerfileを使ったコンテナイメージの作成方法を確認していきます。Corp.先頭へ戻る。