雰囲気でコンテナ使っている 全ての人が読むべき 「コンテナ技術入門」の紹介

雰囲気でコンテナ使っている 全ての人が読むべき 「コンテナ技術入門」の紹介

コンテナを根っこから理解するのに最適なテキスト「コンテナ技術入門」の紹介です。

C47bda32c8455a59471cd7e19c32c074?s=128

濱田孝治

July 05, 2019
Tweet

Transcript

  1. 雰囲気でコンテナ使っている 全ての⼈が読むべき 「コンテナ技術⼊⾨」の紹介

  2. @hamako9999 濱⽥孝治 (ハマコー) 2

  3. 3 最初にお聞きしたい 皆さん、この記事ご存知ですか︖

  4. 4 はてブ︓1266 https://employment.en- japan.com/engineerhub/entry/2019/02 /05/103000

  5. 5 さらにお聞きしたい 最後まで読んで実⾏された⽅は︖

  6. 6 ⼀⾔ なんてもったいない︕︕

  7. 7 話すこと • 「コンテナ技術⼊⾨」にかかれていること • 「コンテナ技術⼊⾨」やって感じたこと • 「コンテナ技術⼊⾨」が素晴らしいところ

  8. 8 「コンテナ技術⼊⾨」 に書かれていること

  9. 9 基本はこれ コンテナをささえている要素技術

  10. 10 コンテナを⽀える要素技術 • Namespace • cgroup • Capability • chrootとpivot_root

    • OverlayFS • Network Namespace
  11. 11 コンテナを⽀える要素技術 • Namespace → カーネルリソースの隔離 • cgroup → リソース制限

    • Capability → 権限制限 • chrootとpivot_root → 権限制限 • OverlayFS → ファイルシステムの階層化 • Network Namespace → ネットワークの隔離
  12. 12 この記事の最⼤の特徴 Dockerコマンドを⼀切使わず コンテナを ⼿を動かして作る

  13. 13 盛り上がってきた 俺もやるときがきたか…!! ( ゚д゚) ガタッ / ヾ __L| / ̄ ̄ ̄/_

    \/ /
  14. 14 実⾏環境の⽤意⽅法 • Vagrant (ubuntu) • 記事における動作確認環境 • Vagrantfileが記載されているのでそれを実⾏ •

    AWS(EC2) • Ubuntu Server(18.04)あたりのAMIから起動 • その他、Ubuntuならそのまま動きそう
  15. 15 実⾏環境の⽤意⽅法 sudo apt-get update sudo apt-get install apt-transport-https ca-certificates

    curl software-properties-common jq curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install -y docker-ce sudo apt-get install -y cgdb sudo apt-get install -y cgroup-tools sudo apt-get install -y uuid-runtime sudo apt-get install -y tree sudo apt-get install -y iputils-ping だいたい、これぐらいやれば動く
  16. 16 要素技術の解説 (抜粋)

  17. 17 「コンテナを作る」 <事前準備> • cgroupでリソース(CPUとメモリ)制限 • Namespaceでリソース隔離 • コンテナ内で「yes >/dev/null」

    <動作確認> • 別シェルでps(プロセス)確認 • topコマンドで利⽤時間確認 コンテナのなかでなに をどうやっても、CPU 利⽤率があがらん︕︕
  18. 18 「OverlayFS」 <事前準備> • サンプルのDockerfile確認 • LAYER1の作成(既存イメージの展開) • LAYER2の作成(LAYER1にcurlを埋め 込み)

    <動作確認> • LAYER1と2をOverlayFSでコンテナイ メージ作成 イメージのレイヤーっ てこれかよ︕
  19. 19 「ネットワークリソースの隔離」 <事前準備> • ネットワークブリッジ作成 • Network Namespace作成 • vethペアを作成、ネットワークブ

    リッジに追加 • デフォルトゲートウェイ設定 <動作確認> • ブリッジとNamespaceのの疎通確認 ネットワークリソース が隔離されるなんて なんかもう凄い︕
  20. 20 「コンテナ技術⼊⾨」 やって感じたこと

  21. 21 「コンテナ技術⼊⾨」やって感じたこと • しんどい • (⼈によるが)知らないコマンドが多すぎる • 都度調べてると、いくらでも時間が溶けていく • Dockerを最低限知ってないと楽しくない

    • Docker知らない状態でやると、⾯⽩くない • 結構な時間がかかる • あれこれ調べながらだと、最低6時間はかかる • ざざーっと⼀度最後まで通してやってみるのもオススメ
  22. 22 「コンテナ技術⼊⾨」が 素晴らしいところ

  23. 23 より深く、Docker、そしてコンテナを 感じ、学ぶためのきっかけとなる

  24. 24 深掘りできるところ • なぜ、ランタイムがこんなに⼭のようにあるのか︖ • なぜ、Dockerfileの書き⽅が、イメージサイズに直 結するのか︖ • なぜ、複数コンテナたてたときのネットワーク管理 があんなにめんどいのか︖

    • なぜ、Fargateみたいなホストインスタンスがない コンテナの運⽤がでてきたのか︖
  25. 25 ここにいる皆さんは コンテナ好きですよね︖

  26. 26 あと何年 コンテナと付き合っていきますか︖

  27. 27 ⼀度Linuxの要素技術でコンテナが どのようにして動いているか体験することで コンテナの使い所や 進化の⽅向性が⾒えてくる

  28. 28 最後に

  29. 29 圧倒的感謝を︕ @hayajo

  30. 30 コンテナで楽しいエンジニアライフを 濱⽥孝治(ハマコー) @hamako9999