SlideShare a Scribd company logo
近頃のDockerネットワーク	
2015	
  8/8	
  
NTT	
  ソフトウェアイノベーションセンタ	
  
大嶋悠司
自己紹介	
•  大嶋 悠司	
  
•  所属 NTT	
  SIC	
  
•  元々機械学習畑	
  
•  OSSやホワイトボックススイッチを触る	
  
– 	
  GoBGP:Go言語BGP実装	
  
	
  (h9p://osrg.github.io/gobgp/)	
  
– Docker	
  
今日の	
  
メイン
Docker	
•  コンテナ仮想化技術を利用したアプリケー
ション基盤ソフトウェア	
  
•  イメージ管理機能があり,容易にアプリを動
作する環境を持ち運べる	
  
•  最近ネットワーク周りに力を入れている
Linuxコンテナ	
物理マシン	
ホストOS	
ハイパーバイザ	
ゲストOS	
物理マシン	
ホストOS	
アプリ	
ア
プ
リ	
ア
プ
リ	
ア
プ
リ	
ゲストOS	
アプリ	
 コンテナ	
起動が早い・オーバーヘッドが少ない	
  
イメージが軽量	
  :	
  	
  
	
  最低限のイメージ(busybox)なら2.4MB	
  Ubuntu14.042でも188MB	
  
Docker周辺	
Flannel	
CoreOS	
 Ubuntu	
  Core	
Consul	
Weave	
Kubernetes	
いっぱいある!!
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	
  
SoYware	
  Infrastructure	
  Plumbing	
libnetwork	
  
コンテナのネットワーク管理	
RunC	
  
コンテナ起動ツール	
  
今回はこの2つ!
コンテナネットワークモデル	
SandBox→コンテナ	
Endpoint→veth	
Network	
EndpointをSandboxにつけたり外したり
Dockerのネットワーク	
linux	
  kernel	
  	
libnetwork	
  driver	
docker0作成	
  
NAT設定書き込み
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を変える	
  
Overlay	
  Driver	
Docker	
  1.8-­‐experimentalから利用可能	
  
Docker	
  netowrkコマンドが追加	
  
service	
  という概念が追加	
  
マルチホストをサポート	
service:あるホスト名がどのendpointを向くか	
  
a9ach/detachで別のコンテナに向けることが可能	
  
Overlay	
  Driver	
linux	
  kernel	
  	
overlay	
  driver	
libkv	
network名	
  
ip	
  ホスト名	
  
VNI	
  
を共有
Docker	
  overlay	
  NW(デモ)	
Swarmもlibkvを使うみたいだからいずれswarmとも連携するはず
実際に中身があるDriverは	
  
Bridge	
  ・	
  overlay	
  ぐらい...	
  
新しいものが追加されるの待ち	
  
	
  
	
  
なんか自分で作りたい!	
  
で	
VLANドライバを作ってみた
libnetwork	
  ドライバ中身	
Ø Config	
  
Ø CreateNetwork	
  
Ø DeleteNetwork	
  
Ø CreateEndpoint	
  
Ø DeleteEndpoint	
  
Ø Join	
  
Ø Leave	
がインターフェースとして定義	
  
ネットワークの情報を格納する構造体はドライバごとにちょっとづつ違う	
  
例えばBridgeドライバはnetworkConfiguraXon
VLAN拡張...
何をやりたかったか	
コンテナ1	
 コンテナ2	
 コンテナ3	
 コンテナ4	
VLAN10	
 VLAN20	
ホストの外のVLANネットワークにコンテナを繋ぎたい
こんな実装にしたい	
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拡張しよう	
  
変更しなきゃいけないところ	
•  1つのホスト内で複数のVLANを設定したい	
  
•  コマンドからVlanIDなどを指定したい	
  
•  接続される物理インターフェースを指定して
VLAN設定したい	
  
•  VLAN毎にIPアドレスを管理したい	
  
1つのホスト内で複数のVLANを設定	
ネットワーク毎にVLANに紐付いたブリッジを作成	
  
networkConfiguraXon	
  
networkコマンドのオプションの値を格納	
  
ネットワークごとにVLAN	
  IDを持つ
コマンドからVlanIDなどを指定したい	
  
network	
  createの時にVLAN	
  IDを設定されたnetworkを作成	
func	
  parseNetworkOpXons:でコマンドからVLANIDなどを取ってきて...	
func	
  CmdNetworkCreate:ネットワーク作成時にVLAN	
  IDを設定
拡張したコマンド(デモ)	
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
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
Dockerネットワークまとめ	
•  DockerのNWは今後libnetworkを中心に発展してい
きそう	
  
•  Weaveもremote	
  driverとして取り込まれる予定	
  
•  今はNATとコンテナ同士のVXLAN.他にどんなNWが
あればいいか	
  
•  今回は省略したがオーケストレーションツール
(swarm	
  compose)とNWが発展してきた	
  
•  Webアプリ以外のユースケースを広げるには?
ここから	
  
コンテナ 「の」 ネットワーク	
  
の話から	
  
コンテナ 「を」 ネットワーク	
  
の話に
ホワイトボックススイッチ	
•  ソフト・OS・ハードは統合されて販売	
  
•  大半のソフトウェアはクローズド	
  
アプリケーション	
ハードウェア	
OS	
アプリケーション	
ハードウェア	
(ユーザの選択した)OS	
•  OS・アプリケーションはユーザが選択	
  
•  自由にアプリの開発が可能	
  
OSとして例えばCumulus	
  LinuxはLinuxベースのスイッチOS	
  
Linuxでアプリを作る間隔でスイッチ上のアプリを開発可能	
  
アプリのデプロイをコンテナでできれば楽だなぁ...
Docker	
  on	
  Cumulus	
  Linux	
•  CumulusはDebian7ベースの独自カーネル	
  
•  HW(quanta)のストレージが極端に少ない	
  
ü  BackPortsなしにDebian7にDockerを入れるのは結構面倒	
  
ü  バイナリを持っていけば動くが,iptablesを書き換えられない(NATを切
る必要)	
  
ü  aufs,	
  devicemapperどちらも使えない(vfs利用)	
  
ü  そもそもdockerのイメージですら更新が増えると容量を圧迫	
そこでRunCですよ!
RunC	
  ?	
RunC	
  とは	
  
 Open	
  Container	
  Projectに準拠させたコンテナ管理ツール	
  
 libcontainerベース	
  
 常駐デーモンがいない	
  
 イメージ管理などはない	
  
 go言語で簡単コンパイル	
  
使い方は簡単(デモ)	
•  go	
  get	
  github.com/opencontainers/runcでとってきて	
  
•  make	
  → make	
  install	
  
•  別の場所でdocker	
  export コンテナ名 >	
  container.tar
でtarに固めたコンテナを	
  
•  tar	
  xvf	
  container.tar	
  -­‐C	
  rooks	
  でrooksに展開	
  
•  runc	
  spec	
  >	
  config.jsonでspecファイル作って	
  
•  sudo	
  runc	
  
でコンテナが動く!	
  
RunC	
  on	
  White	
  Box	
  Switch	
•  ホワイトボックススイッチでもコンテナは動く!	
  
•  まだ制限は多いがスイッチ上でコンテナを使
えば容易にアプリがデプロイできる	
  
•  今後NW機器でもコンテナが動いていく!(か
も)	
  

More Related Content

PPTX
VMwareユーザのためのdocker入門 ~Re:Virtualization Night #1~
PPTX
Dockerが抱えるネットワークの課題
PDF
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
PDF
8a1#19[はじめてのdocker] 公開版
PDF
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
PDF
Dockerクイックツアー
PDF
Dockerについて
PPTX
Docker超入門
VMwareユーザのためのdocker入門 ~Re:Virtualization Night #1~
Dockerが抱えるネットワークの課題
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
8a1#19[はじめてのdocker] 公開版
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Dockerクイックツアー
Dockerについて
Docker超入門

What's hot (20)

PPTX
15分で分か(った気になれ)るDocker
PDF
Docker 基本のおさらい
PDF
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
PDF
Docker ComposeでMastodonが必要なものを梱包する話
PDF
Docker volume基礎/Project Longhorn紹介
PDF
DockerでWordPressサイトを開発してみよう
PPTX
BuildKitによる高速でセキュアなイメージビルド
PDF
Docker hands on nifty sakura jul19
PPTX
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
PPTX
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
PPTX
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
PDF
清貧Docker ~個人がDockerを使う理由~
PPTX
Docker入門~word press環境を作ってみる ハンズオン編 ver1.4~ pulic
PDF
Dockerの基本と応用~快適コンテナライフを実現するArukas~
PDF
Docker Compose 徹底解説
PDF
オトナのDocker入門
PDF
爆速プレビュープロキシ pool
PDF
Docker技術情報アップデート 2015年7月号
PPTX
CAMPHOR- day 2020 - Docker 超入門
PDF
コンテナ技術と普及がシステム・インテグレータに与える影響
15分で分か(った気になれ)るDocker
Docker 基本のおさらい
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
Docker ComposeでMastodonが必要なものを梱包する話
Docker volume基礎/Project Longhorn紹介
DockerでWordPressサイトを開発してみよう
BuildKitによる高速でセキュアなイメージビルド
Docker hands on nifty sakura jul19
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
清貧Docker ~個人がDockerを使う理由~
Docker入門~word press環境を作ってみる ハンズオン編 ver1.4~ pulic
Dockerの基本と応用~快適コンテナライフを実現するArukas~
Docker Compose 徹底解説
オトナのDocker入門
爆速プレビュープロキシ pool
Docker技術情報アップデート 2015年7月号
CAMPHOR- day 2020 - Docker 超入門
コンテナ技術と普及がシステム・インテグレータに与える影響
Ad

Similar to 近頃のDockerネットワーク (20)

PDF
Docker技術情報アップデート v1.9 ネットワークとオーケストレーション
PPTX
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
PDF
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
PDF
Dive into dockerネットワーク
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PDF
Docker入門: コンテナ型仮想化技術の仕組みと使い方
PDF
Hack for Docker's Network
PPTX
今さら聞けない人のためのDocker超入門
PDF
Weaveを試してみた
PPTX
今さら聞けない人のためのDocker超入門
PDF
Docker 17.06 Updates 最近何が変わったの?
PPTX
明日からはじめられる Docker + さくらvpsを使った開発環境構築
PDF
Dockerの利用事例
PDF
Dockerの仕組みとIIJ社内での利用例
PPTX
コンテナのネットワークインターフェース その実装手法とその応用について
PPTX
今さら聞けない人のためのDocker超入門 - KOF
PDF
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
PDF
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
PPTX
コンテナネットワーキング(CNI)最前線
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
Docker技術情報アップデート v1.9 ネットワークとオーケストレーション
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
[1C5] Docker Comose & Swarm mode Orchestration (Japan Container Days - Day1)
Dive into dockerネットワーク
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Hack for Docker's Network
今さら聞けない人のためのDocker超入門
Weaveを試してみた
今さら聞けない人のためのDocker超入門
Docker 17.06 Updates 最近何が変わったの?
明日からはじめられる Docker + さくらvpsを使った開発環境構築
Dockerの利用事例
Dockerの仕組みとIIJ社内での利用例
コンテナのネットワークインターフェース その実装手法とその応用について
今さら聞けない人のためのDocker超入門 - KOF
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
コンテナネットワーキング(CNI)最前線
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
Ad

More from Yuji Oshima (11)

PDF
MLCT#12 使われる機能目指して 測ったり試したり
PDF
KubeFlow MeetUp #1 Katibよもやま話
PDF
KubeFlowでどこまでいける?
PDF
2018 07-23
PDF
2018 07-19dist
PDF
PPTX
KubernetesでGPUクラスタを管理したい
PPTX
Infrakitの話とk8s+GPUの話
PPTX
Infrakit Docker_Tokyo_meetup
PDF
Docker1.12イングレスロードバランサ
PDF
runC概要と使い方
MLCT#12 使われる機能目指して 測ったり試したり
KubeFlow MeetUp #1 Katibよもやま話
KubeFlowでどこまでいける?
2018 07-23
2018 07-19dist
KubernetesでGPUクラスタを管理したい
Infrakitの話とk8s+GPUの話
Infrakit Docker_Tokyo_meetup
Docker1.12イングレスロードバランサ
runC概要と使い方

近頃のDockerネットワーク