Docker inside containers

Kazuaki Fujikura
Kazuaki FujikuraSolution Architect à Amazon Web Service Japan K.K.
コンテナの中のコンテナ
~Docker inside containers~
株式会社シャノン Platform Technologyグループ
藤倉 和明
1
お?
2
3
OpenVZコンテナの中で
Docker動かせたら色々捗りそう
4
試してみた
5
環境
ホストサーバ :AWSのEC2
instance-type : m3.medium
ホストサーバOS : OpenVZ
(2.6.32-042stab106.4)
Amazon EC2
6
セットアップ
042stab105.4以降のOpenVZを用意
vzctl 4.9以降のバージョンを用意
※ Paravirtualの場合はOpenVZカーネルをビルドする必要有り
7
セットアップ
とりあえず流れに沿って
コマンドを実行&実行して
OpenVZコンテナを立ち上げる
8
セットアップ
CentOS6の場合はOpenVZコンテナ内で
cgroup用のmountを実施する必要がある
9
コンテナの中でDockerを起動!
Docker daemon
起動したっぽい
10
docker runでコンテナ起動
centos imageを
pullし始めた
# docker run –i –t centos /bin/bash
11
Docker daemon
Dockerコンテナ
あっさり起動
12
Hostから見たプロセスツリー
OpenVZ コンテナのinit ->
Docker daemonの下にDocker
container のプロセスツリー ->
13
Amazon
EC2
container1 container2
Host instance
ディレクトリ構造はこんな感じだった
/vz/root/<
container1 _id>
/var/lib/docker/
/
/vz/root/<
container2 _id>
/var/lib/docker/
container1のdockerのディレクトリはHost instanceから見て /vz/root/< container1 _id>/var/lib/docker/
14
Amazon
EC2
eth0
container1 container2
veth1 veth2
eth0 eth0
br0
Host instance
ネットワーク構造はこんな感じになってた
docke
r0
veth_d
ocker1
eth0
docke
r0
veth_d
ocker1
eth0
Bridgeを使って親子間のネットワーク接続
15
仮想サーバ(EC2)の中に
仮想サーバ(OpenVZ)立てて
さらに仮想サーバ(Docker)立てた感じ
16
その他試してみた事
1:自分の環境をそのままimport
2:HostサーバでDocker daemon起動
17
自分の環境をimport
今動かしている自分の開発環境を
Docker container 化して検証する事がで
きますよ
でできる。
excludes.listは/dev/とか/proc/とか/sys/を除外するように記述する。
1:tar cfzp /tmp/iamge.tar.gz / -X /tmp/excludes.list # 容量等要注意!
2:cat iamge.tar.gz | docker import - myserver/v1
3:docker run –I –t -p 8080:8080 myserver/v1 /bin/bash
18
自分の環境をimport
これができると、自分の環境をそのまま試して壊せる。
opensslとかglibcとかのバージョン上げてみたいじゃ
ん?
自分の環境でDeployの検証とか手軽にしたいじゃ
ん?
もう怖くないよ!
19
HostサーバでDocker daemon起動
OpenVZコンテナでbridgeとか、
netfilter(iptables)が使えない場合もある
ので、それを回避する手段を考えてみた
20
Amazon
EC2
eth0
container1
veth1
eth0
br0
Host instance
今回試した構成はこんな感じになってたのを
docke
r0
veth_d
ocker1
eth0
Docker
client
Docker container
21
Amazon
EC2
eth0
container1
veth1
eth0
br0
Host instance
こんな感じにしてみた
docke
r0
veth_d
ocker1
eth0
Docker
client
Docker container
22
どゆこと?
23
Hostサーバでdocker daemonを起動させ
る。その時のオプションに一工夫
こんな感じでdaemon起動させると
OpenVZコンテナ内にリポジトリが出来て、
docker daemonと通信するsocketファイル
ができる。
# docker -H unix:///vz/root/<ctid>/var/run/docker.sock --
graph=/vz/root/<ctid>/var/lib/docker/ -d
24
Amazon
EC2
eth0
container1
veth1
eth0
br0
Host instance
利用者目線ではcontainers in container 的な使い方ができる
docke
r0
veth_d
ocker1
eth0
Docker
client
Docker container
OpenVZ コンテナ内から
Hostサーバで起動してる
Docker daemonの操作が
できる!
docker run ~
※ 注意点 ※
Host instanceとOpenVZ containerではDockerのバージョンを合わせておくこと。APIバージョン違うとコケるよ
25
Docker便利だね
これでもっと開発が楽しくなる?
26
シャノンでは一緒に楽しく開発してくれる
メンバーを募集中です!
楽しい開発環境を提供する事に悦びを感じら
れるインフラエンジニアも募集中です!
https://www.green-
japan.com/company/1632
27
おしまい
※ 本スライドは2016/03/09の社内
勉強会での資料を修正したものです
1 sur 28

Contenu connexe

Tendances(20)

Kickstart, Puppet, DockerKickstart, Puppet, Docker
Kickstart, Puppet, Docker
Hirokazu Tokuno453 vues
Twemproxy (nutcracker)Twemproxy (nutcracker)
Twemproxy (nutcracker)
Yoshinori Teraoka847 vues
EcsEcs
Ecs
bbaa2122 vues
社内勉強会(Docker)社内勉強会(Docker)
社内勉強会(Docker)
Shinya Sasaki806 vues
Docker Machineを始めるには?Docker Machineを始めるには?
Docker Machineを始めるには?
Masahito Zembutsu25.2K vues
Docker運用(入門編)Docker運用(入門編)
Docker運用(入門編)
Sumito Tsukada920 vues
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
Masahide Yamamoto1.8K vues
OpenvswitchでVPSOpenvswitchでVPS
OpenvswitchでVPS
Daisuke Nakajima6.2K vues
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
kazuyas10.4K vues
Docker v14Docker v14
Docker v14
靖 小田島123 vues
DockerがYAVAY!DockerがYAVAY!
DockerがYAVAY!
Teppei Sato9.3K vues
Rancher.ioを試してみるRancher.ioを試してみる
Rancher.ioを試してみる
Takaaki Fukai5K vues
Docker Swarm入門Docker Swarm入門
Docker Swarm入門
Masahito Zembutsu42.8K vues

Similaire à Docker inside containers(20)

Docker inside containers