Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2015-11-30_dockerでドッカンドッカンする話

Takeru Ichii
December 07, 2015

 2015-11-30_dockerでドッカンドッカンする話

初めてのDockerネタ。間違ってたら優しく教えて下さい。
いろいろまずければ削除します。

Takeru Ichii

December 07, 2015
Tweet

More Decks by Takeru Ichii

Other Decks in Programming

Transcript

  1. おしながき • 仮想化技術今昔物語 • Dockerとは • Vagrantと何が違うの? • 立ててみる •

    Dockerfile • 生死判定 • ファイルシステム • ネットワーキング 2015/11/30 2 ※注意   内容に間違いがある可能性はあります。この情報で不利益を被った場合に当方は 一切保証をいたしません。心優しい方は修正点をお送りください。多分直します。
  2. 仮想化技術今昔物語 Type-­2  Hypervisor型VM App A Hypervisor  (Type  2) Host  OS

    Server Guest OS Bins/ Libs App A’ Guest OS Bins/ Libs App B Guest OS Bins/ Libs VM Guest OS Guest OS 2015/11/30 4 http://www.slideshare.net/dotCloud/docker-­intro-­nov ember
  3. Dockerとは コンテナ型仮想化 (と言うかホストOS上のプロセス) 2015/11/30 8 App  A’ Docker Host  OS

    Server Bins/Libs App  A Bins/Libs App  B App  B’ App  B’ App  B’ Container http://www.slideshare.net/dotCloud/docker-­intro-­november
  4. Dockerとは 2015/11/30 9 App  A’ Docker Host  OS Server Bins/Libs

    App  A Bins/Libs App  B App  B’ App  B’ App  B’ Container App A Hypervisor  (Type  2) Host  OS Server Guest OS Bins/ Libs App A’ Guest OS Bins/ Libs App B Guest OS Bins/ Libs VM Guest OS Guest OS 必要リソース少なそう… http://www.slideshare.net/dotCloud/docker-­intro-­november
  5. Dockerとは 2015/11/30 10 App  A’ Docker Host  OS Server Bins/Libs

    App  A Bins/Libs App  B App  B’ App  B’ App  B’ Container App A Hypervisor  (Type  2) Host  OS Server Guest OS Bins/ Libs App A’ Guest OS Bins/ Libs App B Guest OS Bins/ Libs VM Guest OS Guest OS http://www.slideshare.net/dotCloud/docker-­intro-­november 曰く、 コンテナは分離されているが、 必要に応じてOSやBinaryやライブラリを 共有するので、展開が早く、オーバーヘッドは小さく、 簡単に移行できて、再起動も早い
  6. Dockerとは 2015/11/30 11 $  cat  /proc/meminfo MemTotal:      

             2050296  kB #  cat  /proc/meminfo MemTotal:                2050296  kB コンテナ ホストOS(boot2docker) ホストOSとコンテナはメモリを共有している
  7. Dockerとは 2015/11/30 12 $  ps ax  –forest ……… 853  ?

                    Sl 0:00  /usr/local/bin/docker daemon 1117  ?                Sl 0:00    ¥_  docker-­‐proxy  -­‐proto  tcp 1125  pts/2        Ss+        0:00    ¥_  bash 1275  pts/2        T            0:00            ¥_  top ……… #  ps ax -­‐-­‐forest PID  TTY            STAT      TIME  COMMAND 1  ?                Ss          0:00  bash 19  ?                T            0:00  top 22  ?                R+          0:00  ps ax  -­‐-­‐forest コンテナ ホストOS (boot2docker) Dockerコンテナ内プロセスは ホストOSからも見える (プロセスは分離)
  8. Dockerとは Dockerコンテナ内のプロセスは殆ど無い! (本来VMならあるカーネルプロセスも無い) 2015/11/30 13 #  ps aux    

                USER              PID  %CPU  %MEM        VSZ      RSS  TTY            STAT  START      TIME  COMMAND root                  1    0.0    0.1    18264    3328  ?                Ss      09:45      0:00  bash root                19    0.0    0.0    11052    2024  ?                T        10:02      0:00  top root                28    0.0    0.1    15572    2148  ?                R+      10:42      0:00  ps aux In  docker container
  9. 立ててみる Boot2dockerとは • Tiny  Core  Linuxベースの軽量Linuxディストリビューションを中心とした DockerをWindows/Macから直接(風)扱うソフト • 曰く、 •

    本体は27MB以内 • 5秒以内にboot • Windows/MacのCLI端末にdockerコマンドを提供する • Windows/Macユーザーはまずboot2docker経由でVMをupしてから dockerコマンドでdockerコンテナを操作することになる 2015/11/30 20 http://boot2docker.io/ http://www.tinycorelinux.net/
  10. 立ててみる Windows/Mac準備編 • Virtualboxをインストール • https://www.virtualbox.org/wiki/Downloads • boot2dockerとDockerをインストール • http://boot2docker.io/

    • boot2dockerで初期化処理 • Win  :  デスクトップにあるであろう[Boot2Docker  Start]を実行 • Mac  :  $  boot2docker  init &&  eval "$(boot2docker   shellinit)" • boot2dockerのVMの中にsshで入る(Winは初期化と同時にやってくれる) • Mac:  $  boot2docker  up  &&  boot2docker  ssh 2015/11/30 21
  11. 立ててみる 2015/11/30 22 $  #dockerの公式イメージをDL $  docker pull  ubuntu:latest $

     #dockerコンテナを立てる $  docker run  ubuntu:latest #  #コンテナのbashに切り替わるのでubuntuのapt-­‐get試してみる #  apt-­‐get  upgrade #  うまく言ったらexitしてコンテナのプロセスを終了させる #  exit $
  12. Dockerfile コンテナの構成管理を行う • docker runしただけでは構成自体は別の環境で再現できない • ただし、イメージ(後述)は更新されているので、docker commitとか docker exportすれば新しいイメージとして他の環境で再現可能

    • イメージは最初作られた時点最新のパッケージ等で構成されているので、 時間が経て ばパッケ ージ アップ デートが でき なくなるな どの不具 合が あったりする(ex: Ubuntuのapt-­‐getできなかったことがあった) • Dockerfileはdocker imageの素で、イメージを構成するための手順を 記載するファイル(ChefのRecipe的なアレ) • docker buildでDockerfileを指定すると、その手順でイメージが作成され、 runできる状態になる(docker imagesで確認可能) 2015/11/30 23
  13. Dockerfile コンテナの構成管理を行う 2015/11/30 24 FROM  debian:jessie MAINTAINER  NGINX  Docker Maintainers

     "docker-­‐[email protected]" RUN  apt-­‐key  adv -­‐-­‐keyserver hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys  573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/  jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie RUN  apt-­‐get  update  &&  ¥ apt-­‐get  install  -­‐y  ca-­‐certificates  nginx=${NGINX_VERSION}  &&  ¥ rm -­‐rf /var/lib/apt/lists/* #  forward  request  and  error  logs  to  docker log  collector RUN  ln  -­‐sf  /dev/stdout /var/log/nginx/access.log RUN  ln  -­‐sf  /dev/stderr /var/log/nginx/error.log VOLUME  ["/var/cache/nginx"] EXPOSE  80  443 CMD  ["nginx",  "-­‐g",  "daemon  off;"] https://github.com/nginxinc/docker-­nginx/blob/master/Dockerfile
  14. Dockerfile コンテナの構成管理を行う 25 FROM  debian:jessie MAINTAINER  NGINX  Docker Maintainers  "docker-­‐[email protected]"

    RUN  apt-­‐key  adv -­‐-­‐keyserver hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys  573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/  jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie RUN  apt-­‐get  update  &&  ¥ apt-­‐get  install  -­‐y  ca-­‐certificates  nginx=${NGINX_VERSION}  &&  ¥ rm -­‐rf /var/lib/apt/lists/* #  forward  request  and  error  logs  to  docker log  collector RUN  ln  -­‐sf  /dev/stdout /var/log/nginx/access.log RUN  ln  -­‐sf  /dev/stderr /var/log/nginx/error.log VOLUME  ["/var/cache/nginx"] EXPOSE  80  443 CMD  ["nginx",  "-­‐g",  "daemon  off;"] https://github.com/nginxinc/docker-­nginx/blob/master/Dockerfile Docker imageのベースになるOSの指定 これの場合はDebian Jessie(v8.2)
  15. Dockerfile コンテナの構成管理を行う 26 FROM  debian:jessie MAINTAINER  NGINX  Docker Maintainers  "docker-­‐[email protected]"

    RUN  apt-­‐key  adv -­‐-­‐keyserver hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys  573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/  jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie RUN  apt-­‐get  update  &&  ¥ apt-­‐get  install  -­‐y  ca-­‐certificates  nginx=${NGINX_VERSION}  &&  ¥ rm -­‐rf /var/lib/apt/lists/* #  forward  request  and  error  logs  to  docker log  collector RUN  ln  -­‐sf  /dev/stdout /var/log/nginx/access.log RUN  ln  -­‐sf  /dev/stderr /var/log/nginx/error.log VOLUME  ["/var/cache/nginx"] EXPOSE  80  443 CMD  ["nginx",  "-­‐g",  "daemon  off;"] https://github.com/nginxinc/docker-­nginx/blob/master/Dockerfile Dockerfileの作者情報
  16. Dockerfile コンテナの構成管理を行う 27 FROM  debian:jessie MAINTAINER  NGINX  Docker Maintainers  "docker-­‐[email protected]"

    RUN  apt-­‐key  adv -­‐-­‐keyserver hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys  573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/  jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie RUN  apt-­‐get  update  &&  ¥ apt-­‐get  install  -­‐y  ca-­‐certificates  nginx=${NGINX_VERSION}  &&  ¥ rm -­‐rf /var/lib/apt/lists/* #  forward  request  and  error  logs  to  docker log  collector RUN  ln  -­‐sf  /dev/stdout /var/log/nginx/access.log RUN  ln  -­‐sf  /dev/stderr /var/log/nginx/error.log VOLUME  ["/var/cache/nginx"] EXPOSE  80  443 CMD  ["nginx",  "-­‐g",  "daemon  off;"] https://github.com/nginxinc/docker-­nginx/blob/master/Dockerfile RUNコマンドでイメージ作成時に 実行するbashコマンドを指定する
  17. Dockerfile コンテナの構成管理を行う 2015/11/30 28 FROM  debian:jessie MAINTAINER  NGINX  Docker Maintainers

     "docker-­‐[email protected]" RUN  apt-­‐key  adv -­‐-­‐keyserver hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys  573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/  jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie RUN  apt-­‐get  update  &&  ¥ apt-­‐get  install  -­‐y  ca-­‐certificates  nginx=${NGINX_VERSION}  &&  ¥ rm -­‐rf /var/lib/apt/lists/* #  forward  request  and  error  logs  to  docker log  collector RUN  ln  -­‐sf  /dev/stdout /var/log/nginx/access.log RUN  ln  -­‐sf  /dev/stderr /var/log/nginx/error.log VOLUME  ["/var/cache/nginx"] EXPOSE  80  443 CMD  ["nginx",  "-­‐g",  "daemon  off;"] https://github.com/nginxinc/docker-­nginx/blob/master/Dockerfile ENVコマンドでイメージ作成時に実行する コンテナ内部の環境変数を設定する
  18. Dockerfile コンテナの構成管理を行う 2015/11/30 29 FROM  debian:jessie MAINTAINER  NGINX  Docker Maintainers

     "docker-­‐[email protected]" RUN  apt-­‐key  adv -­‐-­‐keyserver hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys  573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/  jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie RUN  apt-­‐get  update  &&  ¥ apt-­‐get  install  -­‐y  ca-­‐certificates  nginx=${NGINX_VERSION}  &&  ¥ rm -­‐rf /var/lib/apt/lists/* #  forward  request  and  error  logs  to  docker log  collector RUN  ln  -­‐sf  /dev/stdout /var/log/nginx/access.log RUN  ln  -­‐sf  /dev/stderr /var/log/nginx/error.log VOLUME  ["/var/cache/nginx"] EXPOSE  80  443 CMD  ["nginx",  "-­‐g",  "daemon  off;"] https://github.com/nginxinc/docker-­nginx/blob/master/Dockerfile パッケージアップデートして、nginx install。 完了したらapt-­getできないようにリスト削除
  19. Dockerfile コンテナの構成管理を行う 2015/11/30 30 FROM  debian:jessie MAINTAINER  NGINX  Docker Maintainers

     "docker-­‐[email protected]" RUN  apt-­‐key  adv -­‐-­‐keyserver hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys  573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/  jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie RUN  apt-­‐get  update  &&  ¥ apt-­‐get  install  -­‐y  ca-­‐certificates  nginx=${NGINX_VERSION}  &&  ¥ rm -­‐rf /var/lib/apt/lists/* #  forward  request  and  error  logs  to  docker log  collector RUN  ln  -­‐sf  /dev/stdout /var/log/nginx/access.log RUN  ln  -­‐sf  /dev/stderr /var/log/nginx/error.log VOLUME  ["/var/cache/nginx"] EXPOSE  80  443 CMD  ["nginx",  "-­‐g",  "daemon  off;"] https://github.com/nginxinc/docker-­nginx/blob/master/Dockerfile 外部のコンテナ等からマウントするための ポジションを設定
  20. Dockerfile コンテナの構成管理を行う 2015/11/30 31 FROM  debian:jessie MAINTAINER  NGINX  Docker Maintainers

     "docker-­‐[email protected]" RUN  apt-­‐key  adv -­‐-­‐keyserver hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys  573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/  jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie RUN  apt-­‐get  update  &&  ¥ apt-­‐get  install  -­‐y  ca-­‐certificates  nginx=${NGINX_VERSION}  &&  ¥ rm -­‐rf /var/lib/apt/lists/* #  forward  request  and  error  logs  to  docker log  collector RUN  ln  -­‐sf  /dev/stdout /var/log/nginx/access.log RUN  ln  -­‐sf  /dev/stderr /var/log/nginx/error.log VOLUME  ["/var/cache/nginx"] EXPOSE  80  443 CMD  ["nginx",  "-­‐g",  "daemon  off;"] https://github.com/nginxinc/docker-­nginx/blob/master/Dockerfile EXPOSEコマンドは docker run時にコンテナ内部から リッスンするNIC  portを指定
  21. Dockerfile コンテナの構成管理を行う 2015/11/30 32 FROM  debian:jessie MAINTAINER  NGINX  Docker Maintainers

     "docker-­‐[email protected]" RUN  apt-­‐key  adv -­‐-­‐keyserver hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys  573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/  jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie RUN  apt-­‐get  update  &&  ¥ apt-­‐get  install  -­‐y  ca-­‐certificates  nginx=${NGINX_VERSION}  &&  ¥ rm -­‐rf /var/lib/apt/lists/* #  forward  request  and  error  logs  to  docker log  collector RUN  ln  -­‐sf  /dev/stdout /var/log/nginx/access.log RUN  ln  -­‐sf  /dev/stderr /var/log/nginx/error.log VOLUME  ["/var/cache/nginx"] EXPOSE  80  443 CMD  ["nginx",  "-­‐g",  "daemon  off;"] https://github.com/nginxinc/docker-­nginx/blob/master/Dockerfile CMDコマンドはdocker run時に実行するbash コマンドを指定する(PID1?)。 ここで実行したプロセスが終了するとコンテナは Exitする。 DockerfileにCMDコマンドは一つしかかけない
  22. Dockerfile コンテナの構成管理を行う 2015/11/30 33 FROM  debian:jessie MAINTAINER  NGINX  Docker Maintainers

     "docker-­‐[email protected]" RUN  apt-­‐key  adv -­‐-­‐keyserver hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys  573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/  jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie RUN  apt-­‐get  update  &&  ¥ apt-­‐get  install  -­‐y  ca-­‐certificates  nginx=${NGINX_VERSION}  &&  ¥ rm -­‐rf /var/lib/apt/lists/* #  forward  request  and  error  logs  to  docker log  collector RUN  ln  -­‐sf  /dev/stdout /var/log/nginx/access.log RUN  ln  -­‐sf  /dev/stderr /var/log/nginx/error.log VOLUME  ["/var/cache/nginx"] EXPOSE  80  443 CMD  ["nginx",  "-­‐g",  "daemon  off;"] https://github.com/nginxinc/docker-­nginx/blob/master/Dockerfile Dockerfileのことを知りたい方は公式リファレンスを見てください (Engですが長くない) https://docs.docker.com/v1.8/reference/builder/
  23. Docker image • Dockerfileからコンテナを実行するためには一度buildしてイメー ジを作成する必要があります • docker build  [  -­‐t

     {イメージ名} [  :{タグ名} ]  ]   {Dockerfileのあるディレクトリ} • Build時にどのようなことが起こっているか軽く説明します。 2015/11/30 34
  24. Docker image 2015/11/30 36 FROM  debian:jessie RUN  apt-­‐key  adv -­‐-­‐keyserver

    hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys   573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/   jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie ……… docker buildで Dockerfileから作られるimage Container  library/nginx
  25. Docker image 2015/11/30 37 FROM  debian:jessie RUN  apt-­‐key  adv -­‐-­‐keyserver

    hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys   573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/   jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie ……… docker buildで Dockerfileから作られるimage (run時ReadOnly) Docker run後に変更されたイメージ領域 (run時Rewritable) Container  library/nginx
  26. Docker commit 2015/11/30 38 FROM  debian:jessie RUN  apt-­‐key  adv -­‐-­‐keyserver

    hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys   573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/   jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie ……… Container  library/nginx
  27. Docker commit 2015/11/30 39 FROM  debian:jessie RUN  apt-­‐key  adv -­‐-­‐keyserver

    hkp://pgp.mit.edu:80  -­‐-­‐recv-­‐keys   573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN  echo  "deb  http://nginx.org/packages/mainline/debian/   jessie nginx"  >>  /etc/apt/sources.list ENV  NGINX_VERSION  1.9.7-­‐1~jessie ……… FROM  my_container Container  my_container docker commit Container  library/nginx
  28. 生死判定 • Dockerはプロセス(重要) • DockerfileのCMDま たはdocker runコマンドで指定した親プロセス (PID1?)がkillされると死亡扱いになりdocker psで出てこなくなる •

    イメージは生きてるのでdocker ps –aで確認可能 • bashとかnginxみたいなデーモンプロセスを指定する必要がある • なので cat /proc/meminfo みたいなプロセスはdocker runした 瞬間に落ちるように見える(このあたりすげーハマった) • 複数のデーモ ンプ ロ セス(Webサー バー とDBMS)があ る場合は supervisordみたいなプロセス管理ツールを挟んで使ったりしましょう。 2015/11/30 40
  29. ネットワーキング 2015/11/30 43 1.2.3.4 192.168.1.0/24 eth0 192.168.1.2/24 docker0 172.17.42.1/16 Dockerがインストールされるとdocker0という仮想

    ブリッジアダプタが作成されます。 仮想ブリッジのIPアドレスはeth0のIPアドレス設定を 見て重複しないIPレンジを選択し、決定します
  30. ネットワーキング 2015/11/30 44 1.2.3.4 192.168.1.0/24 eth0 192.168.1.2/24 docker0 172.17.42.1/16 NAP

    T docker0 は ホ ス ト マ シ ン の eth0 に NAPT を 介 し て 接続し、外部ネットワークに接続されます。 この設定はiptablesで行われます。
  31. ネットワーキング 2015/11/30 46 1.2.3.4 192.168.1.0/24 eth0 192.168.1.2/24 docker0 172.17.42.1/16 NAP

    T veth eth0 172.17.0.1/16 docker0にveth(仮想EthernetAdapter)とコンテナのeth0が ペアで作成され、接続されます。
  32. ネットワーキング 2015/11/30 47 1.2.3.4 192.168.1.0/24 eth0 192.168.1.2/24 docker0 172.17.42.1/16 NAP

    T veth eth0 172.17.0.1/16 Default Gatewayをdocker0として、IPアドレスはランダムに 決定されます。 コンテナのIPアドレスはDHCPではなく、dockerがコンテナ 内部に入って直接IPアドレスを書き込んでます。
  33. ネットワーキング 2015/11/30 48 1.2.3.4 192.168.1.0/24 eth0 192.168.1.2/24 docker0 172.17.42.1/16 NAP

    T veth eth0 172.17.0.1/16 DockerfileのEXPOSEコマンドで指定されたポートがある場合は そのポートは自動で開放されます。(後述)
  34. ネットワーキング 2015/11/30 49 1.2.3.4 192.168.1.0/24 eth0 192.168.1.2/24 docker0 172.17.42.1/16 NAP

    T veth veth veth eth0 172.17.0.1/16 eth0 172.17.0.2/16 eth0 172.17.0.3/16 veth(仮想EthernetAdapter)とコンテナのeth0のペアは コンテナの数だけ作成されます。
  35. ネットワーキング ポート開放 2015/11/30 50 1.2.3.4 192.168.1.0/24 eth0 192.168.1.2/24 docker0 172.17.42.1/16

    NAP T veth eth0 172.17.0.1/16 DockerfileのEXPOSEコマンドでport80が指定されている場合
  36. ネットワーキング ポート開放 2015/11/30 51 1.2.3.4 192.168.1.0/24 eth0 192.168.1.2/24 docker0 172.17.42.1/16

    NAP T veth eth0 172.17.0.1/16 docker0は172.17.0.1:80に アクセスできる
  37. ネットワーキング ポート開放 2015/11/30 52 1.2.3.4 192.168.1.0/24 eth0 192.168.1.2/24 docker0 172.17.42.1/16

    NAP T veth eth0 172.17.0.1/16 eht0は172.17.0.1:80にアクセスするために ポート フォ ワー ディング の設 定 を介して 接続することができる
  38. ネットワーキング ポート開放 2015/11/30 53 1.2.3.4 192.168.1.0/24 eth0 192.168.1.2/24 docker0 172.17.42.1/16

    NAP T veth eth0 172.17.0.1/16 docker run時に-­‐pオプションをつけること でコンテナの開放ポートとのマッピングを制 御可能 (ex: eth0のport8080とコンテナのport80を マッピングする)
  39. もっといっぱい知りたい方は • 公式reference  v1.8(Eng) • https://docs.docker.com/v1.8/ • 前佛さんのスライド(Jpn) • http://www.slideshare.net/zembutsu/introduction-­to-­docker-­

    management-­and-­operations-­2nd • Docker Introduction(Eng) • http://www.slideshare.net/dotCloud/docker-­intro-­november 2015/11/30 54