Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

28 最後に

Slide 29

Slide 29 text

29 圧倒的感謝を︕ @hayajo

Slide 30

Slide 30 text

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