プログラミングライフスタイル

「Docker」の「イメージ・ネットワーク・データ永続化」について学ぼう!

前回は「コンテナ」に焦点を当ててお話をしてきましたが、今回は「Docker」の「イメージ・ネットワーク・データ永続化」についてお話をしていきたいと思います。

「Docker」は、「プログラムの実行環境」を共通化できる仕組みでもありますので、複数人でのチーム開発などでは非常に効率的に開発を行うことができます。

イメージ

「イメージ」は「コンテナの元」になるファイルでした。

「WEBサーバー」の「イメージ」から「コンテナ」を作成する場合は、下図のようになります。

イメージとコンテナ

今回は、左側の「イメージの操作方法」についてご説明していきたいと思います。

イメージの一覧

現在保存されている「イメージ」の一覧を確認するためには、

docker image ls

を実行します。

さまざまな「イメージ」から「コンテナ」を作成していると、どんどん「イメージ」が溜まっていきますので、不要な「イメージ」は削除していきましょう。

イメージの削除

「イメージ」を削除するには、

docker image rm イメージ名	

を実行します。

コンテナで利用されていないイメージを一括で削除したい場合は、

docker image prune -a

を実行します。

「aオプション」は、利用されていない「イメージ」を削除するためのオプションです。

イメージの詳細を確認

「イメージ」の詳細を確認したい場合は、

docker image inspect ローカルに保存したイメージ名

イメージの階層構造

1つのイメージは、さまざまなイメージを重ねた「階層構造」を成しています。

イメージの階層構造

イメージが「どのような構造になっているのか?」を調べるためには、

docker image history イメージ名

を実行します。

イメージの作成

イメージは自分で作ることもできます。

コンテナを作成し、コンテナに入り必要なソフトウェアなどをインストールした後に、「イメージを作っていつでもコンテナを起動できるようにし、インストールしたソフトウェアを利用したい」という場合は、

docker container commit コンテナ名 作成するイメージ名

を実行すると、イメージを作成することができます。

ネットワーク

「Docker」の内部にはネットワークがあり、「作成したコンテナ」を任意のネットワークに接続することができます。

ネットワーク一覧の確認

ネットワークの一覧を確認するためには、

docker network ls

を実行します。

「デフォルト」では、

  • bridge
  • host
  • none

の3つのネットワークが用意されています。

「bridge」は、NATを利用したネットワークで、「host」は「Dockerの起動しているPCのネットワーク」です。

「none」は、「どこにも接続できないネットワーク」のため、ほとんど使われることはありません。

多くの場合は「bridge」に接続しておけば問題無いと思われます。

ネットワークの作成

「Docker」で利用するネットワークは、自分で作ることもできます。

docker network create ネットワーク名

のように実行すると、ネットワークを作ることができます。

ネットワークの詳細を確認

ネットワークの詳細を見るには、

docker network inspect ネットワーク名

を実行します。

ネットワークの削除

「指定したネットワーク」を削除するには、

docker network rm ネットワーク名

を実行します。

「現在利用されていないネットワーク」を削除するには、

docker network prune

のように実行します。

コンテナをネットワークへ接続と離脱

任意のコンテナをネットワークに接続するには、

docker network connect ネットワーク名 コンテナ名

を実行します。

コンテナをネットワークから離脱させるには、

docker network disconnect ネットワーク名 コンテナ名

のように実行します。

データの永続化

「Docker」の「データの永続化」には、2種類あり「バインド」と「ボリューム」という手法があります。

「バインド」は「Dockerが起動しているOSのフォルダ」にデータを保存します。

「ボリューム」は、「Dockerの管理領域」にデータを保存します。

「バインド」と「ボリューム」は、下記のようなイメージになります。

バインドとボリューム

通常は「ボリューム」を利用するケースが多いと思いますので、今回は「ボリューム」の利用方法についてお話していきたいと思います。

ボリュームの作成

「Docker」のボリュームを作成するには、

docker volume create ボリューム名

のように実行します。

ボリュームの確認

現在「Docker」内に作成されている「ボリューム」を確認するには、

docker volume ls

を実行します。

ボリュームのコンテナへのマウント

「ボリューム」を「コンテナ」で使えるようにするためには、

docker container run --mount source ボリューム名,target=コンテナのディレクトリパス

「mountオプション」で指定された「target」の「=コンテナのディレクトリパス」の内容がボリュームに保存されます。

この内容は「コンテナ」を破棄した後も残り続けますので、再度コンテナを起動して「ボリューム」を割り当てると、「コンテナ」を破棄する前の状態を復元することができます。

ボリュームの削除

不要になった「ボリューム」は、

docker volume rm ボリューム名

で削除することができます。

HOMEへ