後輩SEとの勉強会(2018/11/17)制約と誓約 #docker入門
後輩SEからDockerを分かるようになりたいので勉強会のトピックにさせてほしいと提案があり、今日のテーマはDocker。以前、Swiftの案件でDockerを入れたそうで最近またDockerを記事とかで目にして知りたくなったんだとか。今振り返ると、もう少し良い説明があった気がするので再現でなく、ポイントを絞って掘り下げます。
制約と誓約
漫画ハンター×ハンターを知っている人なら分かると思いますが、Dockerはまさにこれ。Dockerでは普通のサーバなら出来るようなファイルシステムへのアクセスや、プロセス間の連携はできません。これはまさにコンテナ、箱に閉じ込められたようなものです。これが制約です。そして、開発者はお作法に従った開発を行います。これが誓約。こういう不自由さがあるゆえに、形の決まった箱、コンテナであるがゆえに、箱を載せる載せるOSは中身が何かを意識する必要はありません。どこに持って行ってもDocker上で動くことが保証されています。これがDocker、コンテナ技術で得られるメリットです。
と言っても、全く意識しなくていいかというとそうでもないかもしれない。以前、航空会社の貨物部門で働いてる友人から、貨物は積載量に応じてどのように配置するか計算しないといけないという話を聞いたことがあります。
コンテナ技術というのはとてもうまい例えで、少し前にコンテナ物語という本がはやってましたが、規格化して中身を意識しなくてもよくなるというのはすごいことですよね。
演習
今日はDockerを動かしてみるというのを目標にしていたので、Dockerをインストールして公式サイトのチュートリアルに従ってDockerでHello Worldをした。基本この手順でやると、ものの10分でDockerを動かしてみることができた。
Part 2:コンテナ — Docker-docs-ja 17.06.Beta ドキュメント
ただ、2か所ほどはまったのでメモ。
docker build でイメージを作る時にエラーが出る。
app.pyファイルに日本語のコメントがあるのだが、それがdocker buildでエラーになる。このコメント行を削除するとdocker buildは通るようになる。
localhost:4000でアクセスできない
これはどうも実行したDockerがIPをデフォルトでもっているらしく、そのIPにアクセスすると作ったページが表示される。このURL↓
話したこと
この資料の始めの方を見ながら話したけど、Dockerの必要性を理解するにはある程度企業やサービスでどうやってサーバを運用しているか知識が必要だと思った。