Linuxコンテナの基礎 #oscnagoya #osc_lxcjp

6
Yoshikazu GOTO @goto_ipv6

加藤さんによる「Linuxコンテナの基礎」です。 speakerdeck.com/tenforward/osc… ※ハッシュタグを変えます。マイナス記号が… #oscnagoya #osc_lxcjp

2017-05-27 16:13:41
Yoshikazu GOTO @goto_ipv6

加藤さん:最近は、あまり開発に参加していませんが、ちょっとだけ。主に翻訳を。 #oscnagoya #osc_lxcjp

2017-05-27 16:16:17
Yoshikazu GOTO @goto_ipv6

加藤さん:今日の目標: ・コンテナの概要を理解する →Docker を含め、Linux でコンテナを使う場合の知識 ・Linux カーネルが持つ機能 #oscnagoya #osc_lxcjp

2017-05-27 16:17:51
Yoshikazu GOTO @goto_ipv6

加藤さん:コンテナとは: ・カーネルの機能で →隔離された空間でプロセスを実行する →プロセスに対してリソース制限を設定する #oscnagoya #osc_lxcjp

2017-05-27 16:18:35
Yoshikazu GOTO @goto_ipv6

加藤さん:コンテナとは: ・VMとくらべてみる →VMだと、物理マシンがあって、ハイパーバイザーがあって、VMプロセスが走って、その上に OS、アプリが動く →→OS が 2階層 #oscnagoya #osc_lxcjp

2017-05-27 16:19:42
Yoshikazu GOTO @goto_ipv6

→コンテナだと、物理マシンがあって、OS があって、その中で、プロセスを独立した環境で動作させる →→プロセスの起動の方法を変えるとコンテナ環境でプロセスが動作するように #oscnagoya #osc_lxcjp

2017-05-27 16:20:55
Yoshikazu GOTO @goto_ipv6

加藤さん:仮想化というよりは、隔離化って感じ。 #oscnagoya #osc_lxcjp

2017-05-27 16:21:08
Yoshikazu GOTO @goto_ipv6

加藤さん:メリット: ・VMだと、OS が 2階層なのでメモリなどのリソースを多く食う ・コンテナだと、隔離しているだけなので、リソースはそれほど食わない #oscnagoya #osc_lxcjp

2017-05-27 16:21:49
Yoshikazu GOTO @goto_ipv6

加藤さん: ・VMだと、リソースを指定して起動することが多いが、コンテナの場合、制限を加えることはできるが、細かく分かれないので高集積化が可能に #oscnagoya #osc_lxcjp

2017-05-27 16:23:10
Yoshikazu GOTO @goto_ipv6

加藤さん:デメリット: ・VMの場合、Linux 上で Windows を動かすことができる ・コンテナの場合はそれができない #oscnagoya #osc_lxcjp

2017-05-27 16:23:43
Yoshikazu GOTO @goto_ipv6

・また Linux カーネル内で全てが実装されているので、ここが複雑になるかな、と #oscnagoya #osc_lxcjp

2017-05-27 16:24:11
Yoshikazu GOTO @goto_ipv6

加藤さん: ・ちょっとした疑似 OS な環境を作ったり、プロセスレベルで隔離したりできる #oscnagoya #osc_lxcjp

2017-05-27 16:24:59
Yoshikazu GOTO @goto_ipv6

加藤さん:起動させるプロセスから見たコンテナ: ・システムコンテナ →init からまるごと ・アプリケーションコンテナ →Docker はこっち #oscnagoya #osc_lxcjp

2017-05-27 16:25:41
Yoshikazu GOTO @goto_ipv6

加藤さん:Linux カーネルに「コンテナ」という機能があるわけではない: #oscnagoya #osc_lxcjp

2017-05-27 16:25:54
Yoshikazu GOTO @goto_ipv6

加藤さん:Linux でコンテナを実現するための機能: ・Namespace →プロセスをグループ化して他のグループを隔離 ・cgroup →グループ化したプロセスに対するリソース制限 #oscnagoya #osc_lxcjp

2017-05-27 16:26:58
Yoshikazu GOTO @goto_ipv6

加藤さん: ・その他 →NW、ケーパビリティ、chroot、bind mount など #oscnagoya #osc_lxcjp

2017-05-27 16:27:25
Yoshikazu GOTO @goto_ipv6

加藤さん:実装例: ・Docker ・runC ・LXC/LXD #oscnagoya #osc_lxcjp

2017-05-27 16:27:46
Yoshikazu GOTO @goto_ipv6

加藤さん:Namespace: ・こういった名前の機能が一つだけあるわけではない ・隔離したい OS リソース毎に Namespace が準備される ・一部の Namespace だけ使用して隔離環境を作ることができる →NWだけ、とか #oscnagoya #osc_lxcjp

2017-05-27 16:28:52
Yoshikazu GOTO @goto_ipv6

加藤さん:Mount Namespace: ・プロセスから見えているマウントの集合、捜査を分離する #oscnagoya #osc_lxcjp

2017-05-27 16:30:00
Yoshikazu GOTO @goto_ipv6

加藤さん:UTS Namespace: ・ホスト名など、uname(2) が返す値の集合を分離 #oscnagoya #osc_lxcjp

2017-05-27 16:30:35
Yoshikazu GOTO @goto_ipv6

加藤さん:PID Namespace: ・PID 空間の分離 ・新しい PID Namespace では PID 1 から始まる PID が割り当てられる ・親から子の PID Namespace は見えるが、子から親は見えない #oscnagoya #osc_lxcjp

2017-05-27 16:31:50
Yoshikazu GOTO @goto_ipv6

加藤さん:IPC Namespace: ・SysV IPC オブジェクト、POSIX メッセージキューを隔離 #oscnagoya #osc_lxcjp

2017-05-27 16:32:21
Yoshikazu GOTO @goto_ipv6

加藤さん:User Namespace: ・独立した UID/GID 空間と外部空間のマッピング ・User Namespace は一般ユーザーで作成可能 #oscnagoya #osc_lxcjp

2017-05-27 16:34:05
Yoshikazu GOTO @goto_ipv6

加藤さん:Network Namespace: ・ネットワークデバイスの分離 ・ルーティングテーブルの分離 #oscnagoya #osc_lxcjp

2017-05-27 16:34:27