Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

濱田孝治

July 05, 2019
Tweet

More Decks by 濱田孝治

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. 11
    コンテナを⽀える要素技術
    • Namespace → カーネルリソースの隔離
    • cgroup → リソース制限
    • Capability → 権限制限
    • chrootとpivot_root → 権限制限
    • OverlayFS → ファイルシステムの階層化
    • Network Namespace → ネットワークの隔離

    View Slide

  12. 12
    この記事の最⼤の特徴
    Dockerコマンドを⼀切使わず
    コンテナを
    ⼿を動かして作る

    View Slide

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

    View Slide

  14. 14
    実⾏環境の⽤意⽅法
    • Vagrant (ubuntu)
    • 記事における動作確認環境
    • Vagrantfileが記載されているのでそれを実⾏
    • AWS(EC2)
    • Ubuntu Server(18.04)あたりのAMIから起動
    • その他、Ubuntuならそのまま動きそう

    View Slide

  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
    だいたい、これぐらいやれば動く

    View Slide

  16. 16
    要素技術の解説
    (抜粋)

    View Slide

  17. 17
    「コンテナを作る」
    <事前準備>
    • cgroupでリソース(CPUとメモリ)制限
    • Namespaceでリソース隔離
    • コンテナ内で「yes >/dev/null」
    <動作確認>
    • 別シェルでps(プロセス)確認
    • topコマンドで利⽤時間確認
    コンテナのなかでなに
    をどうやっても、CPU
    利⽤率があがらん︕︕

    View Slide

  18. 18
    「OverlayFS」
    <事前準備>
    • サンプルのDockerfile確認
    • LAYER1の作成(既存イメージの展開)
    • LAYER2の作成(LAYER1にcurlを埋め
    込み)
    <動作確認>
    • LAYER1と2をOverlayFSでコンテナイ
    メージ作成
    イメージのレイヤーっ
    てこれかよ︕

    View Slide

  19. 19
    「ネットワークリソースの隔離」
    <事前準備>
    • ネットワークブリッジ作成
    • Network Namespace作成
    • vethペアを作成、ネットワークブ
    リッジに追加
    • デフォルトゲートウェイ設定
    <動作確認>
    • ブリッジとNamespaceのの疎通確認
    ネットワークリソース
    が隔離されるなんて
    なんかもう凄い︕

    View Slide

  20. 20
    「コンテナ技術⼊⾨」
    やって感じたこと

    View Slide

  21. 21
    「コンテナ技術⼊⾨」やって感じたこと
    • しんどい
    • (⼈によるが)知らないコマンドが多すぎる
    • 都度調べてると、いくらでも時間が溶けていく
    • Dockerを最低限知ってないと楽しくない
    • Docker知らない状態でやると、⾯⽩くない
    • 結構な時間がかかる
    • あれこれ調べながらだと、最低6時間はかかる
    • ざざーっと⼀度最後まで通してやってみるのもオススメ

    View Slide

  22. 22
    「コンテナ技術⼊⾨」が
    素晴らしいところ

    View Slide

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

    View Slide

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

    View Slide

  25. 25
    ここにいる皆さんは
    コンテナ好きですよね︖

    View Slide

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

    View Slide

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

    View Slide

  28. 28
    最後に

    View Slide

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

    View Slide

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

    View Slide