Dockerについて調べても調べても「・・・・で?何?」となってた私が
Qiitaにこうやって綴るくらい感動した例え話です.(笑)
*ちなみにプレステはやったことも触ったこともないですが,そんな私でも分かったので安心してください!
結論
プレステ本体->docker
ゲームカセット->image
ゲームカセットを挿しゲームができる状態のプレステ本体->コンテナ
ゲームカセットが並んでる場所->docker hub
例)プレステ(プレステ本体)でマリカー(ゲームカセット)をする <-> docker(docker)でMYSQL(image)を使う
よしマリカーをしよう!となった時,当たり前ですがプレステ本体だけではマリカー出来ないですよね.
同様にマリカーのゲームカセットだけでも動かないですよね.
あくまでプレステ本体は,ゲームカセットが動く環境を持っている機械です.
Dockerも同じでMYSQLというイメージが動くための環境でしかないです.
プレステとdockerは目に見える実態物かそうでないかの大きな違いはありますが,役目としては同じです.
マリカーのカセットをプレステ本体にセットしてようやくゲームができます.
これがdockerの世界では,コンテナといいます.
DockerにMYSQLをセットすることでMYSQLがつかえるようになります.
その状態をコンテナと言います.
MYSQLの他にもPHPを使いたい!とかなれば,docker hubに探しにいきましょう!
他のゲームカセットがほしい!と思った時,おもちゃ屋さんに行ってゲームカセットが羅列している場所に行きますよね.
この”ゲームカセットが羅列している場所”,つまり”imageが集まっている場所”がdocker hubです.
おまけ1_データの保存
プレステでゲームしたことがある方はよくわかると思うのですが,
プレステ本体にもゲームカセットにも保存機能ってないんですよね(初期のものだけかな?).
でもステージ0からステージ4まで進んだのにプレステの電源を切って次の日起動したら,保存されてなくてステージ0からのスタート!とか嫌ですよね笑
だからステージ4まで進んでます,という情報を,”USBみたいなメモリ”をプレステに差し込んで,そのメモリに保存してあげるんです.
Dockerも同じで,起動している間は情報の記憶を持ってますが,起動を切るとデータが保存されません.
なのでデータを保存してくれるものを外付けしてあげる必要があるんです.
じゃあ,プレステだったら”USBみたいなメモリ”だけど,dockerで対応するものは?となりますが,
ここに関しては使うimageによって違うので例えられないです・・・笑
おまけ2_docker-composeとは違う?
違います!
正確には使い方が違う,ですかね.
かるーく説明すると,
dockerの場合,使いたいimageを一個ずつセットしないといけないですが,
docker-composeは,docker-compose.ymlというファイルに使いたいimageの情報をバーっと複数記述してあげるだけで一気にセットすることが可能です.
本記事の本題である例え話でいくと,仕組みはdockerと同じと思っていいと思います!(私はそう思ってる笑)
さいごに
そんな感じで
Dockerって難しい!正体が摘めない!と毛嫌いしてた私ですが,
この話をきいてdockerってそんなに難しくないかも!って思えたので,
同じように今思ってくれてたら嬉しいですね!
他にもっといい例えがあるよ!って方とか意義あり!って方とか
なんでもコメントください^ ^
では・・・・!