狠狠撸
Submit Search
近顷の顿辞肠办别谤ネットワーク
?
19 likes
?
5,073 views
Yuji Oshima
Follow
Tremaday #7 で発表した資料です.
Read less
Read more
1 of 32
Download now
Downloaded 44 times
More Related Content
近顷の顿辞肠办别谤ネットワーク
1.
近顷の顿辞肠办别谤ネットワーク 2015 ?8/8 ? NTT
?ソフトウェアイノベーションセンタ ? 大嶋悠司
2.
自己紹介 ?? 大嶋 悠司 ? ??
所属 NTT ?SIC ? ?? 元々機械学習畑 ? ?? OSSやホワイトボックススイッチを触る ? –? ?GoBGP:Go言語BGP実装 ? ?(h9p://osrg.github.io/gobgp/) ? –?Docker ?
3.
今日の ? メイン
4.
Docker ?? コンテナ仮想化技術を利用したアプリケー ション基盤ソフトウェア ? ??
イメージ管理機能があり,容易にアプリを動 作する環境を持ち運べる ? ?? 最近ネットワーク周りに力を入れている
5.
Linuxコンテナ 物理マシン ホストOS ハイパーバイザ ゲストOS 物理マシン ホストOS アプリ ア プ リ ア プ リ ア プ リ ゲストOS アプリ コンテナ 起動が早い?オーバーヘッドが少ない ? イメージが軽量
?: ? ? ?最低限のイメージ(busybox)なら2.4MB ?Ubuntu14.042でも188MB ?
6.
Docker周辺 Flannel CoreOS Ubuntu ?Core Consul Weave Kubernetes いっぱいある!!
7.
Docker Toolbox h9ps://www.docker.com/products/overview Docker ?engine ? v1.7
? コンテナの起動 Docker ?Machine ? v0.3 ? コンテナ実行環境構築 ? Docker ?Compose ? v1.3.3 ? 複数コンテナの構成定義 ? Docker ?Swarm ? v0.4 ? コンテナクラスタ構築 Docker ?Registry ? v0.91 ? コンテナイメージの ? 保管管理 ? KitemaXc ? デスクトップ向けGUI ?
8.
SoYware ?Infrastructure ?Plumbing libnetwork
? コンテナのネットワーク管理 RunC ? コンテナ起動ツール ? 今回はこの2つ!
9.
コンテナネットワークモデル SandBox→コンテナ Endpoint→veth Network EndpointをSandboxにつけたり外したり
10.
Dockerのネットワーク linux ?kernel ? libnetwork
?driver docker0作成 ? NAT設定書き込み
11.
libnetwork ?ドライバ docker ?network
?create ?-?‐d ?ドライバ名 ? ?? libnetwork ?driver ? –? bridge(デフォルト) ?ホストでNATされるブリッジ接続 ? –? null 所謂-?‐-?‐net=none ? –? host ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?所謂-?‐-?‐net=host ? –? overlay ?VXLANでトンネルを張る ? –? windows(?) スケルトンだけ ? docker/vendor/src/github.com/docker/libnetwork/drivers ? libnetworkは指定するドライバによって提供されるnetworkを変える ?
12.
Overlay ?Driver Docker ?1.8-?‐experimentalから利用可能
? Docker ?netowrkコマンドが追加 ? service ?という概念が追加 ? マルチホストをサポート service:あるホスト名がどのendpointを向くか ? a9ach/detachで別のコンテナに向けることが可能 ?
13.
Overlay ?Driver linux ?kernel
? overlay ?driver libkv network名 ? ip ?ホスト名 ? VNI ? を共有
14.
Docker ?overlay ?NW(デモ) Swarmもlibkvを使うみたいだからいずれswarmとも連携するはず
15.
実際に中身があるDriverは ? Bridge ??
?overlay ?ぐらい... ? 新しいものが追加されるの待ち ? ? ? なんか自分で作りたい! ?
16.
で VLANドライバを作ってみた
17.
libnetwork ?ドライバ中身 ???Con?g ? ???CreateNetwork
? ???DeleteNetwork ? ???CreateEndpoint ? ???DeleteEndpoint ? ???Join ? ???Leave がインターフェースとして定義 ? ネットワークの情報を格納する構造体はドライバごとにちょっとづつ違う ? 例えばBridgeドライバはnetworkCon?guraXon
18.
痴尝础狈拡张...
19.
何をやりたかったか コンテナ1 コンテナ2 コンテナ3
コンテナ4 VLAN10 VLAN20 ホストの外のVLANネットワークにコンテナを繋ぎたい
20.
こんな実装にしたい Container1 Container2 eth0 eth0 veth1
veth1 eth0 eth0.200eth0.100 br100 10.0.0.1 br200 10.0.1.1 でもこれって ? ブリッジ作ってエンドポイント付けたり ? ブリッジ配下のエンドポイントにIP振ったり ? 大部分がBridgeドライバを流用できる… VLANドライバつくろう BrigadeドライバをVLAN拡張しよう ?
21.
変更しなきゃいけないところ ?? 1つのホスト内で複数のVLANを設定したい ? ??
コマンドからVlanIDなどを指定したい ? ?? 接続される物理インターフェースを指定して VLAN設定したい ? ?? VLAN毎にIPアドレスを管理したい ?
22.
1つのホスト内で複数のVLANを設定 ネットワーク毎にVLANに紐付いたブリッジを作成 ? networkCon?guraXon ? networkコマンドのオプションの値を格納
? ネットワークごとにVLAN ?IDを持つ
23.
コマンドからVlanIDなどを指定したい ? network ?createの時にVLAN
?IDを設定されたnetworkを作成 func ?parseNetworkOpXons:でコマンドからVLANIDなどを取ってきて... func ?CmdNetworkCreate:ネットワーク作成時にVLAN ?IDを設定
24.
拡張したコマンド(デモ) Ex: VLAN 100をeth0に紐づけて作成
? Ex: コンテナをVLAN 100にアタッチされた状態で起動 # ./docker-1.8.0-dev network create -d bridge --vlanid=100 --ifname=eth0 vlan100 # ./docker-1.8.0-dev run -itd –net=vlan100 ubuntu /bin/bash
25.
IP指定するときはこんな感じ Ex: VLAN 100を作成かつブリッジに特定のIP,配下のエンドポイントのIP範囲指定
? ? ? ? ? ? ? Ex: コンテナをVLAN 100にアタッチされた状態かつIPを指定して起動 # ./docker-1.8.0-dev network create -d bridge --vlanid=100 --ifname=eth0 -?‐-?‐ bip=10.0.0.1/8 -?‐-?‐fixed-cidr=10.0.0.0/16 vlan100 ? # ./docker-1.8.0-dev run -itd -?‐-?‐net=vlan100:<container-?‐IP> ubuntu /bin/bash 内部ではipコマンド叩いてサブインタフェース作っている https://github.com/dockervlan/docker
26.
Dockerネットワークまとめ ?? DockerのNWは今後libnetworkを中心に発展してい きそう ? ??
Weaveもremote ?driverとして取り込まれる予定 ? ?? 今はNATとコンテナ同士のVXLAN.他にどんなNWが あればいいか ? ?? 今回は省略したがオーケストレーションツール (swarm ?compose)とNWが発展してきた ? ?? Webアプリ以外のユースケースを広げるには?
27.
ここから ? コンテナ 「の」 ネットワーク ? の話から
? コンテナ 「を」 ネットワーク ? の話に
28.
ホワイトボックススイッチ ?? ソフト?OS?ハードは統合されて販売 ? ??
大半のソフトウェアはクローズド ? アプリケーション ハードウェア OS アプリケーション ハードウェア (ユーザの選択した)OS ?? OS?アプリケーションはユーザが選択 ? ?? 自由にアプリの開発が可能 ? OSとして例えばCumulus ?LinuxはLinuxベースのスイッチOS ? Linuxでアプリを作る間隔でスイッチ上のアプリを開発可能 ? アプリのデプロイをコンテナでできれば楽だなぁ...
29.
Docker ?on ?Cumulus
?Linux ?? CumulusはDebian7ベースの独自カーネル ? ?? HW(quanta)のストレージが極端に少ない ? ü?? BackPortsなしにDebian7にDockerを入れるのは結構面倒 ? ü?? バイナリを持っていけば動くが,iptablesを書き換えられない(NATを切 る必要) ? ü?? aufs, ?devicemapperどちらも使えない(vfs利用) ? ü?? そもそもdockerのイメージですら更新が増えると容量を圧迫 そこでRunCですよ!
30.
RunC ?? RunC ?とは
? Open ?Container ?Projectに準拠させたコンテナ管理ツール ? libcontainerベース ? 常駐デーモンがいない ? イメージ管理などはない ? go言語で簡単コンパイル ?
31.
使い方は簡単(デモ) ?? go ?get
?github.com/opencontainers/runcでとってきて ? ?? make ?→ make ?install ? ?? 別の場所でdocker ?export コンテナ名 > ?container.tar でtarに固めたコンテナを ? ?? tar ?xvf ?container.tar ?-?‐C ?rooks ?でrooksに展開 ? ?? runc ?spec ?> ?con?g.jsonでspecファイル作って ? ?? sudo ?runc ? でコンテナが動く! ?
32.
RunC ?on ?White
?Box ?Switch ?? ホワイトボックススイッチでもコンテナは動く! ? ?? まだ制限は多いがスイッチ上でコンテナを使 えば容易にアプリがデプロイできる ? ?? 今後NW機器でもコンテナが動いていく!(か も) ?
Download