コンテナを根っこから理解するのに最適なテキスト「コンテナ技術入門」の紹介です。
雰囲気でコンテナ使っている全ての⼈が読むべき「コンテナ技術⼊⾨」の紹介
View Slide
@hamako9999濱⽥孝治(ハマコー)2
3最初にお聞きしたい皆さん、この記事ご存知ですか︖
4はてブ︓1266https://employment.en-japan.com/engineerhub/entry/2019/02/05/103000
5さらにお聞きしたい最後まで読んで実⾏された⽅は︖
6⼀⾔なんてもったいない︕︕
7話すこと• 「コンテナ技術⼊⾨」にかかれていること• 「コンテナ技術⼊⾨」やって感じたこと• 「コンテナ技術⼊⾨」が素晴らしいところ
8「コンテナ技術⼊⾨」に書かれていること
9基本はこれコンテナをささえている要素技術
10コンテナを⽀える要素技術• Namespace• cgroup• Capability• chrootとpivot_root• OverlayFS• Network Namespace
11コンテナを⽀える要素技術• Namespace → カーネルリソースの隔離• cgroup → リソース制限• Capability → 権限制限• chrootとpivot_root → 権限制限• OverlayFS → ファイルシステムの階層化• Network Namespace → ネットワークの隔離
12この記事の最⼤の特徴Dockerコマンドを⼀切使わずコンテナを⼿を動かして作る
13盛り上がってきた俺もやるときがきたか…!!( ゚д゚) ガタッ/ ヾ__L| / ̄ ̄ ̄/_\/ /
14実⾏環境の⽤意⽅法• Vagrant (ubuntu)• 記事における動作確認環境• Vagrantfileが記載されているのでそれを実⾏• AWS(EC2)• Ubuntu Server(18.04)あたりのAMIから起動• その他、Ubuntuならそのまま動きそう
15実⾏環境の⽤意⽅法sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl software-properties-common jqcurl -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 updatesudo apt-get install -y docker-cesudo apt-get install -y cgdbsudo apt-get install -y cgroup-toolssudo apt-get install -y uuid-runtimesudo apt-get install -y treesudo apt-get install -y iputils-pingだいたい、これぐらいやれば動く
16要素技術の解説(抜粋)
17「コンテナを作る」<事前準備>• cgroupでリソース(CPUとメモリ)制限• Namespaceでリソース隔離• コンテナ内で「yes >/dev/null」<動作確認>• 別シェルでps(プロセス)確認• topコマンドで利⽤時間確認コンテナのなかでなにをどうやっても、CPU利⽤率があがらん︕︕
18「OverlayFS」<事前準備>• サンプルのDockerfile確認• LAYER1の作成(既存イメージの展開)• LAYER2の作成(LAYER1にcurlを埋め込み)<動作確認>• LAYER1と2をOverlayFSでコンテナイメージ作成イメージのレイヤーってこれかよ︕
19「ネットワークリソースの隔離」<事前準備>• ネットワークブリッジ作成• Network Namespace作成• vethペアを作成、ネットワークブリッジに追加• デフォルトゲートウェイ設定<動作確認>• ブリッジとNamespaceのの疎通確認ネットワークリソースが隔離されるなんてなんかもう凄い︕
20「コンテナ技術⼊⾨」やって感じたこと
21「コンテナ技術⼊⾨」やって感じたこと• しんどい• (⼈によるが)知らないコマンドが多すぎる• 都度調べてると、いくらでも時間が溶けていく• Dockerを最低限知ってないと楽しくない• Docker知らない状態でやると、⾯⽩くない• 結構な時間がかかる• あれこれ調べながらだと、最低6時間はかかる• ざざーっと⼀度最後まで通してやってみるのもオススメ
22「コンテナ技術⼊⾨」が素晴らしいところ
23より深く、Docker、そしてコンテナを感じ、学ぶためのきっかけとなる
24深掘りできるところ• なぜ、ランタイムがこんなに⼭のようにあるのか︖• なぜ、Dockerfileの書き⽅が、イメージサイズに直結するのか︖• なぜ、複数コンテナたてたときのネットワーク管理があんなにめんどいのか︖• なぜ、Fargateみたいなホストインスタンスがないコンテナの運⽤がでてきたのか︖
25ここにいる皆さんはコンテナ好きですよね︖
26あと何年コンテナと付き合っていきますか︖
27⼀度Linuxの要素技術でコンテナがどのようにして動いているか体験することでコンテナの使い所や進化の⽅向性が⾒えてくる
28最後に
29圧倒的感謝を︕@hayajo
30コンテナで楽しいエンジニアライフを濱⽥孝治(ハマコー)@hamako9999