今日は「コンテナ若葉マーク」を受講。
世界一わかりみの深いコンテナ&Docker入門
- コンテナは単なるプロセス
- HyperVisor + OS が不要で、DockerEngine 上のプロセスで動くから高速
- プロセスはホストOSのカーネルを共有
# ps ax たくさんでる # unshare --mount-proc -p --fork /bin/bash # ps ax とすると、プロセスが同じ名前空間を利用するので全然出てこない
docker はプロセス空間を一緒にする感じで、 namespace に作成ともろもろのコマンドの簡略化を行う。
後半は、k8s の話。
k8s は本番で使わなくても学ぶ価値はある。
「私がk8sで構築したかったから」
プロダクトじゃなくてブログとかなら十分な理由になりますね 。
構築ブログもありました。
怖くないコンテナ・ネットワーク
docker いれると、docker0 172.17.0.1/16
のネットワークが自動で作られる。
- 以下のコマンドで諸々確認
- sudo docker network ls
- sudo docker network inspect bridge
- sudo docker container inspect Docker名
- コンテナ内から別コンテナにcurlでアクセスできる
docker 内のネットワークってあんまり意識して作ったことが無い状況。 docker-composeは、ネットワーク定義なくても自動で専用のbridgeネットワークが作られるとのこと。 普段は、docker-compose を使っているからかな。
実運用から考えるコンテナ技術
献血が趣味114回...すごい。丸々5人分ぐらいの血液を献血してるんじゃないだろうか。
コンテナを使って「何を実現するべきなのか」を常に考えて学んでいくべきと。 Dockerファイルを作るのはそれほど難しくないので、その向こう側をイメージする必要がある。 Docker になっても監視は大事。 アウトプット大事。
所感
コンテナっていつぐらいから使いだしてたかなーと、 docker images
してみて、ローカルの一番古いイメージは
mysql 5.7.12 2fd136002c22 4 years ago 378MB
でした。
docker rmi
もして消してるからもっと昔から試してたかもしれないけど、少なくとも 4年前ぐらいから使っていそう。
開発環境では4年ぐらい前からで、本番環境ではここ2年ぐらいか?
サクッと環境作って試すには、本当に Docker 便利ですね。
本番で使おうとすると、k8s なり ECS なりオートスケールツールが必要でかなり辛いのですが、単独で使うには本当に便利です。