SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
近頃の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機器でもコンテナが動いていく!(か
も)	
  

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

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

Ähnlich wie 近頃のDockerネットワーク

Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
Sho Shimizu
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Masahiro Nagano
 

Ähnlich wie 近頃のDockerネットワーク (20)

Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化ソフトウェア工学2023 06 コンテナ仮想化
ソフトウェア工学2023 06 コンテナ仮想化
 
10th jan 2013_miyazaki
10th jan 2013_miyazaki10th jan 2013_miyazaki
10th jan 2013_miyazaki
 
Lxc on cloud
Lxc on cloudLxc on cloud
Lxc on cloud
 
Kubernetesを触ってみた
Kubernetesを触ってみたKubernetesを触ってみた
Kubernetesを触ってみた
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
 
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
make x dockerで作るAlpaca流開発環境
make x dockerで作るAlpaca流開発環境make x dockerで作るAlpaca流開発環境
make x dockerで作るAlpaca流開発環境
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2
 
Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会
 
Osc2009 Do Xen Hara
Osc2009 Do Xen HaraOsc2009 Do Xen Hara
Osc2009 Do Xen Hara
 
DPDKを拡張してみた話し
DPDKを拡張してみた話しDPDKを拡張してみた話し
DPDKを拡張してみた話し
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
 

Mehr von Yuji Oshima (11)

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

近頃のDockerネットワーク