Docker コンテナ構築 ハンズオン に参加してきたので内容をメモっておきます。
思い出しながら書いたメモなので一部内容が間違ってるかもしれないので違っていたらコメントなどください
ハンズオンについて
ハンズオンをしてくださったのは @launcher_test さん
当日ハンズオンで発表された資料はspeakerdeckに上がってた
またハンズオン内で使用したリポジトリは https://github.com/yapodu/hands-on_Docker
内容
ハンズオンの内容は資料の内容まんまだけれど一応まとめると以下のような感じ
- 環境は参加者ごとにVPS?環境(確かさくらVPSとのこと)を用意してあって、そこにssh接続して作業
- ホストOSはCentOS
- はじめにdockerをホストOSにインストールして起動
- 次にCentOSのdockerを立ち上げてattach -> 手動でapacheをインストールして起動をブラウザで確認するところまで
- 確認ができたらこのコンテナをcommit
- 余談だがdocker 1.3 から使えるようになった
docker exec
コマンドが便利とのこと - commit したコンテナを使って新たなコンテナを起動して動いてるのを確認
- 次にDockerfileを使ってコンテナを起動、commit
- さらにホストOSとコンテナのI/Oの速度の違いをfioというツールを使って検証
- fioを使っての検証結果からdockerコンテナ内にファイル書き込みをするのはおすすめできないからdockerのvolumeとfluentdを使ってホストOSのvolumeをマウントしてるディレクトリにファイル書き込みを行うようにするように設定(docker 1.8 から Fluentd Logging driver が追加されるのでもしかしたらこれを使うのがスタンダードになるかもしれないとのこと)
Q&A
ハンズオンが終わったあとのQ&Aはこんな感じだった
- dockerを使う上でI/O以外に気をつけたほうがいいことは?
- ポートを複数開けると通信が遅くなる?(ちゃんと聞き取れてなかった)とのこと
- dockerの監視をどのようにおこなっている?
- 実際にdockerを使って運用してるサービスではdockerが立ち上げてる各コンテナの開放ポートを監視することでコンテナの監視を行っているとのこと
- dockerコンテナのprovisiningで複雑な設定をしたいときにDockerfileだとやりにくそう…
- 1つのdockerコンテナにあまり複雑な仕事をさせるべきではないと考えてるとの事なのでそもそもDockerfileに複雑な設定を書くべきではないとのこと
- アプリケーションの設定上ある程度複雑な設定が必要な場合は設定済みのコンテナをcommitして、Dockerfileではcommitしたコンテナを使うことでシンプルな記述にするべき
- dockerがセキュリティ的にマズイと言われてるのはどんなところ?
- dockerプロセスの起動がrootでしかできなくて、dockerコンテナからホストOSを乗っ取る操作ができるからとのこと(方法は聞いてなかった…これかな?)
- またDocker Hub に登録されてるコンテナがセキュリティ的に未検証のものが多いからとのこと
感想
今までネットの情報を見ながら軽くいじったくらいしかなかったので説明してもらいながら基本的な操作の一通りを経験できたのがよかった。
あと監視周りとか実際に運用していく上での疑問を質問できたのでかなり勉強になった!