Dockerが難しい!のでアクアリウムに例えてみた 後編

はじめに

今回は前編に引き続き、Dockerをアクアリウムに例えて説明していきます。 na-ah.hatenablog.com

前回の復習

(再掲)Dockerとアクアリウムの比較

前回はDockerの次の要素をアクアリウムに例えてみようという話をしました。

今回は引き続きアクアリウムの例を用いて、これらの要素間を変化させるコマンド(Image BuildとContainer Run)についてみていきます。

Image Build(Dockerfile→Image)

Image Buildとオリジナルキット構築の比較

まずはImage Buildからみていきましょう。

Dockerfileからイメージを構築する過程は、アクアリウムの場合は買い物リストから必要な材料を取得してオリジナルのアクアリウム構築キットを作り上げることに例えられます。

-t

tオプションはオリジナルキットの名前です。

-f

fオプションは買い物リストが複数ある場合(オリジナルキットA、オリジナルキットBなど、キットのバリエーションがある場合)に今回どれを使うのかを指定することに例えています。

Container Run ①(Image→Container)

Container Runとアクアリウム構築の比較①

次にContainer Buildをみていきます。 このあたりから、オプションをアクアリウムに例えた時に無理やりな例になってきますが、こじつけでも別の例でイメージができるのとできないのでは理解度が変わってくると思いますので、お付き合いください。

基本的にはアクアリウムの中で動いている魚=プロセスであり、なおかつ魚は電動で動いていたりする設定だったりします。あと魔法もあります。

-it

itオプションはBash魚と話をするときに必要になるエサです。どんな話をするのかはご想像にお任せします。

-d

dオプションを付けるとアクアリウムのライトが消えます。すると、派手な魚(=サーバーなどのログを吐き続けるプロセス)は動き続けているけれども、視界には入ってこない(バックグラウンドで動作しているのでターミナルは操作できる)状態になります。もしライトを付けたままだと、派手な魚(サーバーなど)に常に気を取られた状態(ログが出力されてターミナルが操作できない状態)になってしまいます。

--rm

rmオプションは付けると魚(メインプロセス)が泳ぎを止めたら水槽(コンテナ)ごと崩壊(remove)していくイメージです。この例はremoveですが、stopを例えるならば水を抜くようなイメージでしょうか?

--name

nameオプションは名前をつけるだけですね。

Container Run ② (Image→Container)

Container Runとアクアリウム構築の比較②

Container Runのオプションは多いので2つに分けています。

--env

envオプションは特定の魚が活動するために必要なエサのようなイメージです。そのエサは水槽を漂っているので必要な時にはいつでも食べられます。

-v

vオプションは水槽を別の水槽と繋げる魔法のホースです。

ボリュームマウント

ボリュームマウントは自分の部屋のどこかにある水槽と、アクアリウムをホースで繋げます。指定された範囲の物はそれぞれの水槽に全く同じものが同時に存在する状態になります。

バインドマウント

バインドマウントは手元にある水槽とアクアリウムを繋げます。同様にそれぞれの水槽に指定した範囲の同じものが同時に存在します。

-p

pオプションはリモコンのようなものです。ある電動の魚は水槽の中のリモコンからアクセスできます。この水槽の中のリモコンと手元にあるリモコンをリンクさせれば、手元のリモコンから魚を操作できるようになります。

おわりに

以上でDockerをアクアリウムに例えてみたシリーズはおしまいです。大分無理やりな例もありましたが、例えてみることでぼんやりしていたDockerが手で掴んで動かせるものに変わったような気がします。読んでいただいた方に、この記事が少しでも参考になれば嬉しいです。