dockerで遊んでみよっかー yapc::asia tokyo 2014
DESCRIPTION
TRANSCRIPT
Docker で遊んでみよっかーYAPC::Asia Tokyo 2014
Masahiro Nagano / @kazeburo
Me• 長野雅広 Masahiro Nagano
• @kazeburo
• Operations Engineer / Site Reliability
• LINE Corp.
• YAPC::Asia 2013 Tokyo ベストトーク賞3位
• ISUCON3 優勝
ISUCON4
ISUCON4かかってこいや!!1
調子乗りました(_ _)
本題
その前に
質問
(1) Dockerを使った事がある方?
• Yes
• No
(2) Dockerをどのplatform上で使っていますか?
• MacOS X (boot2docker,仮想マシン含む)
• Linux
• Windows
Docker で遊んでみよっかー
「遊ぶ」というタイトルにした理由• Dockerはまだ若い技術。しかし、大きな可能性がある技術であり、数えきれないほどの周辺ツールがリリースされている
• つまり、ベストプラクティスが定まっていない• 新しい技術に対して「使う」「使わない」の2つのスタンスしかないことはない
• 手元で「遊んでみる」ことから始めよう
真剣に「遊ぶ」
• 基礎を身につける• 実践的なノウハウを貯める
今日の内容• Docker の基本
• Docker!leとDockerイメージのビルド
• DockerでPerlを使う
• Dockerで自動化
• DockerでWebアプリケーション
Docker の基本
Docker とは• Docker (旧dotcloud) 社が開発したコンテナ管理ツール
Docker とは• Docker (旧dotcloud) 社が開発したコンテナ管理ツール
Docker とは
Docker とは• アプリケーションの開発・配布・実行のためのオープンなプラットフォーム
• Dockerを使ってパッケージング(Dockerized)されたアプリケーションはポータビリティが高く、Mac
OS Xの開発環境、Linux上のQA環境、オンプレミス・クラウド上の本番環境など、(Dockerがサポートされている環境なら)どこでも実行が可能
Docker プラットフォームDocker Hub
Docker!le DockerEngine
アプリケーションの共有と配布
アプリケーションのパッケージング
アプリケーションの実行
コンテナ技術
開発環境 クラウド オンプレミス
コンテナ とは• アプリケーションを実行する環境をHostOS
から隔離させ、それぞれに異なるリソースを提供する。その隔離されたプロセスの組を「コンテナ」という
• アプリケーション毎に隔離された実行環境を用意する手段としてはVM(仮想マシン)もある
Server
Host OS
Hypervisor
VM
Guest OS
Apps
VM
Bin/Libs
VM
Guest OS
Apps
Bin/Libs
VM
Guest OS
Apps
Bin/Libs
Server
Host OS
Docker Engine
Container
Apps
Bin/Libs
Container
Apps
Bin/Libs
Container
Apps
Bin/Libs
VMとコンテナ
Container
同じ独立性を確保しながら、より少ないリソースで動作する
kernelは共有
コンテナの動作
Server
Host OS
Docker Engine
ContainerPr
oces
sContainer
Proc
ess
proc
ess A
proc
ess B
proc
ess C
Docker EngineがHost OSから各リソースを隔離する
Proc
ess
コンテナの動作隔離されるリソース
• ファイルシステム• ネットワーク・ホスト名• プロセステーブル• ユーザ権限• CPU・メモリなどのリソース制御
* Linux Kernelの機能を利用
Docker のインストール(Mac OS Xの場合)
Docker のインストール
1) boot2dockerを導入し、Mac上のdocker
コマンドからAPIを経由して操作
2) Vagrantで任意のLinuxディストリビューションを入れる
Linux Kernel が必要なので、Virtulbox, VMware
などで仮想マシンを起動する必要がある
boot2docker• Dockerの起動に特化した軽量Linuxディストリビューション
boot2docker
Container
Proc
ess
Container
Proc
ess
Proc
ess
Mac OS X
DockerCommand VirtualBox
boot2docker (linux)
Docker DaemonTCP 2375
APIを使ってDockerを制御
Mac用DockerはAPIを呼ぶように作られている
Vagrant• 仮想環境構築ツール。Vagrant!leと言われる設定ファイルを使うことで、自動的に仮想環境の構築ができる
boot2docker vs. Vagrantpros cons
boot2docker・インストールが楽・Mac上からDockerを透過的に扱える
・ファイル共有に難あり
Vagrant・ファイル共有がしやすく
柔軟に設定可能・Guest OSの機能を活用
・Guest OSにログインする必要あり
* 迷いにくい Vagrant を使っていきます
Install VirtualBox & Vagrant
このあたりからダウンロードしてください
VagrantでDocker 手作業編
$ mkdir vagrant-docker$ cd vagrant-docker$ vagrant init chef/centos-6.5$ vagrant up$ vagrant ssh
Mac OS X
VagrantでDocker 手作業編
$ sudo yum install -y http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm$ sudo yum install -y docker-io$ sudo service docker start$ sudo /sbin/chkconfig docker on$ sudo usermod -a -G docker vagrant# ログインしなおして
$ docker -vDocker version 1.1.2, build d84a070/1.1.2
Guest OS
VagrantでDocker 自動化編$ cat Vagrantfile$script = <<EOFyum install -y http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmyum install -y docker-io/sbin/chkconfig docker onusermod -a -G docker vagrantEOFVagrant.configure(2) do |config| config.vm.box = "chef/centos-6.5" config.vm.provision "shell", inline: $scriptend$ vagrant up
Mac OS X
初回起動時に自動で実行
“Hello World”
$ docker run ubuntu:14.04 echo Hello WorldUnable to find image 'ubuntu:14.04' locallyPulling repository ubuntuc4ff7513909d: Download complete 511136ea3c5a: Download complete ...cc58e55aa5a5: Download complete Hello World$
Guest OS起動するベースDockerイメージ
bash で入ってみる$ docker run -i -t ubuntu:14.04 bashroot@0840910014be:/# cat /etc/lsb-release | grep DESCRIPTIONDISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"root@0840910014be:/# exit$
Guest OSstdinの維持とttyの割り当て
コンテナのライフタイム
• OSではなくプロセス
• プロセスの終了でコンテナが終了する• ファイルシステムへの変更も破棄される
time
`echo Hello World`コンテナ起動プロセス終了コンテナも終了
“揮発性のあるコンテナ”
揮発性の確認$ docker run -i -t ubuntu:14.04 bashroot@0840910014be:/# echo “hello world” > /tmp/fooroot@0840910014be:/# exitexit$ docker run -i -t ubuntu:14.04 bashroot@0840910014be:/# ls -l /tmp/fools: cannot access /tmp/foo: No such file or directory
Guest OS
time`bash`
ファイルシステム破棄echo > /tmp
`bash`
新しいコンテナ!
Docker の特徴まとめ
• コンテナ技術を活用したアプリケーションの配布・実行のプラットフォーム
• 揮発性のあるコンテナ• Docker!leと階層化イメージ
次の話題
今日の内容• Docker の基本
• Docker!leとDockerイメージのビルド
• DockerでPerlを使う
• Dockerで自動化
• DockerでWebアプリケーション
Docker!leとDockerイメージのビルド
Docker!le とは• Dockerでコンテナを起動する際のイメージを作る手続きを記したファイル
Docker!le
FROM centos:centos6MAINTAINER Masahiro Nagano <[email protected]>
RUN yum install -y http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmRUN yum install -y sl
CMD sl
Docker!le元となるイメージ
build時に実行するコマンド
docker run時に実行するコマンド
Dockerイメージの作成 #0
$ lsDockerfile Vagrantfile$ vagrant ssh
Mac OS X
$ cd /vagrant$ lsDockerfile Vagrantfile$ docker build -t localdev/sl .
Guest OS
自動でGuestOSにマウントされる
イメージに付けるTag名
Dockerイメージの作成 #1
Dockerイメージの作成 #2
docker build ログ$ docker build -t localdev/sl .Step 0 : FROM centos:centos6 Step 1 : MAINTAINER Masahiro Nagano <[email protected]>Step 2 : RUN yum install -y http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm ---> Running in 2207ff8a8f8c...Step 3 : RUN yum install -y sl...Step 4 : CMD sl ---> Running in 65df9252f6ff ---> a8d304eb9f7cRemoving intermediate container 65df9252f6ffSuccessfully built a8d304eb9f7c$
Guest OS
docker build とイメージの作成
FROM centos:centos6
MAINTAINER Masahiro Nagano
RUN yum install -y epel-
release-6-8.noarch.rpm
RUN yum install -y sl
CMD sl
Docker!le
centos6
ファイルシステムの変更点差分イメージを重ねて行く
Dockerはaufs、device-mapper、brtfsなどを使い、差分ファイルシステムを実現している
docker build とイメージの作成
FROM centos:centos6
MAINTAINER Masahiro Nagano
RUN yum install -y epel-
release-6-8.noarch.rpm
RUN yum install -y sl
CMD sl
Docker!le
centos6
epel
ファイルシステムの変更点差分イメージを重ねて行く
Dockerはaufs、device-mapper、brtfsなどを使い、差分ファイルシステムを実現している
docker build とイメージの作成
FROM centos:centos6
MAINTAINER Masahiro Nagano
RUN yum install -y epel-
release-6-8.noarch.rpm
RUN yum install -y sl
CMD sl
Docker!le
centos6
epel
sl
ファイルシステムの変更点差分イメージを重ねて行く
Dockerはaufs、device-mapper、brtfsなどを使い、差分ファイルシステムを実現している
docker build とイメージの作成
FROM centos:centos6
MAINTAINER Masahiro Nagano
RUN yum install -y epel-
release-6-8.noarch.rpm
RUN yum install -y sl
CMD sl
Docker!le
centos6
epel
sl
ファイルシステムの変更点差分イメージを重ねて行く
CMD
Dockerはaufs、device-mapper、brtfsなどを使い、差分ファイルシステムを実現している
差分イメージの枝構造FROM centos:centos6
RUN yum install -y epel.rpm
RUN yum install -y sl
CMD sl
centos6base
epel
sl
CMD
差分イメージの枝構造FROM centos:centos6
RUN yum install -y epel.rpm
RUN yum install -y sl
CMD sl
FROM centos:centos6
RUN yum install -y epel.rpm
RUN yum install -y fortune
CMD fortune
centos6base
epel
sl
CMD
差分イメージの枝構造FROM centos:centos6
RUN yum install -y epel.rpm
RUN yum install -y sl
CMD sl
FROM centos:centos6
RUN yum install -y epel.rpm
RUN yum install -y fortune
CMD fortune
centos6base
epel
sl
CMD
差分イメージの枝構造FROM centos:centos6
RUN yum install -y epel.rpm
RUN yum install -y sl
CMD sl
FROM centos:centos6
RUN yum install -y epel.rpm
RUN yum install -y fortune
CMD fortune
centos6base
epel
sl
Docker!leに変更を加えるとそこから枝が分かれる。
幹は共有する
CMD
差分イメージの枝構造FROM centos:centos6
RUN yum install -y epel.rpm
RUN yum install -y sl
CMD sl
FROM centos:centos6
RUN yum install -y epel.rpm
RUN yum install -y fortune
CMD fortune
centos6base
epel
sl fortune
Docker!leに変更を加えるとそこから枝が分かれる。
幹は共有する
CMD CMD
差分イメージの利点• イメージをネットワーク転送する際に差分のみの転送することで、通信にかかる時間を減らす
• ビルド時に変更点がない箇所の再ビルドを行わずに済み、効率がよい
docker build --no-cache で強制再ビルドできる
Docker!leのよく使うコマンド
“FROM”ベースDockerイメージの指定
FROM <name>:<tag>Docker!le
ベースとなるDockerイメージ名tagを省略すると、latestを使用
“RUN”コマンドの実行
RUN command args argsRUN [“command”,”args”,”args”]
Docker!le
上は [“bash”, ”-c”, “command args args”]
RUN curl -L http://cpanmin.us/ | perl - -n App::cpanminusDocker!le
“COPY”HostOSからコンテナへのファイルコピー
COPY src destDocker!le
“COPY”HostOSからコンテナへのファイルコピー
COPY src destDocker!le
COPY ../src destDocker!le
“COPY”HostOSからコンテナへのファイルコピー
COPY src destDocker!le
COPY ../src destDocker!le
docker build時にDocker!leのあるディレクトリを一時的に領域にコピーしてからビルド開始するのでディレクトリをさかのぼることはできない
“COPY”HostOSからコンテナへのファイルコピー
FROM centos:centos6
COPY README.md /opt/README.md
RUN yum install -y sl
CMD sl
centos6base
COPY
sl
CMD
$ touch README.md
$ docker build .
“COPY”HostOSからコンテナへのファイルコピー
FROM centos:centos6
COPY README.md /opt/README.md
RUN yum install -y sl
CMD sl
centos6base
COPY
sl
CMD
$ touch README.md
$ docker build .
“COPY”HostOSからコンテナへのファイルコピー
FROM centos:centos6
COPY README.md /opt/README.md
RUN yum install -y sl
CMD sl
centos6base
COPY
sl sl’
CMD CMD’
$ touch README.md
$ docker build .
“ADD”
“ADD”COPYより前からあるコマンド
URIを指定できたり、tarファイルを自動解凍できる
必要なければ使わない方がよい
“ENV”環境変数
ENV PLACK_ENV productionENV PATH $PATH:/opt/local/perl-5.20/bin
Docker!le
ENV KEY NAMEDocker!le
変数も使用できる
“CMD”docker run時に起動するコマンド
CMD command args argsDocker!le
CMD [“command”,”args”,”args”]
上は [“bash”, ”-c”, “command args args”] “RUN” と一緒
“EXPOSE”コンテナ内のプロセスがListenするポート
EXPORT PORT_NUMDocker!le
EXPORT 11211CMD memcached -p 11211 -u nobody -m 1024 -c 100000
Docker!le
docker run -p 22122:11211 localdev/memcached
Host側のPort
コンテナのPort
Docker!le Reference
https://docs.docker.com/reference/builder/
今日の内容• Docker の基本
• Docker!leとDockerイメージのビルド
• DockerでPerlを使う
• Dockerで自動化
• DockerでWebアプリケーション
DockerでPerlを使う
System Perl$ docker run -i -t ubuntu:14.04 bashroot@8ac58f29a17a:/# perl -v
This is perl 5, version 18, subversion 2 (v5.18.2) built for x86_64-linux-gnu-thread-multi(with 41 registered patches, see perl -V for more detail)
Copyright 1987-2013, Larry Wall
Perl may be copied only under the terms of either the Artistic License or theGNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found onthis system using "man perl" or "perldoc perl". If you have access to theInternet, point your browser at http://www.perl.org/, the Perl Home Page.
root@8ac58f29a17a:/#
Guest OS
ubuntuの場合
System Perl$ docker run -i -t centos:centos6 bash
Guest OS
CentOSの場合
System Perl$ docker run -i -t centos:centos6 bashbash-4.1# perl -v
Guest OS
CentOSの場合
System Perl$ docker run -i -t centos:centos6 bashbash-4.1# perl -vbash: perl: command not foundbash-4.1#
Guest OS
CentOSの場合
CentOSはイメージサイズを小さくするために perl は削られている!
Perlの入ったイメージを使う
registry.hub.docker.com
Perlで検索!
registry.hub.docker.com
53件
registry.hub.docker.com
53件
どれを使えば良いんだろう~
Dockerイメージを選ぶ基準• official repository
• Docker!leが公開されている
• Description、Docker!leをみてニーズを満たしているかどうか確認する
• Automated build repository を利用している
Automated build repository
Dockerfile
push
Automated build repository
Dockerfile
push
webhook
Automated build repository
Dockerfile
push
webhook docker build
Automated build repository
Dockerfile
push
webhook docker build
push
Automated build repository
Dockerfile
push
webhook docker build
pushbuildの過程に人の手が入らない
Dockerイメージを選ぶ基準
Dockerイメージを選ぶ基準
automated build
Docker!le
github repository
おすすめ Docker イメージ
• perl
• jmmills/plenv
• kazeburo/perl
• 自分で作る
kazeburo/perl の使い方$ docker run -i -t kazeburo/perl:v5.18 perl -vThis is perl 5, version 18, subversion 1 (v5.18.1) built for x86_64-linux
Copyright 1987-2013, Larry Wall..$
Guest OS
kazeburo/perl の使い方
FROM kazeburo/perl:v5.18RUN cpanm -n PlackCMD plackup -v
Docker!le
cpanmも導入済み
$ docker build -t localdev/perl .$ docker run localdev/perl Plack 1.0031$
GuestOS
今日の内容• Docker の基本
• Docker!leとDockerイメージのビルド
• DockerでPerlを使う
• Dockerで自動化
• DockerでWebアプリケーション
Docker で自動化
Docker の主な利用法
(Web)アプリケーションの実行≒
Docker の活用例速い起動速度と揮発性を利用
http://blog.linknode.net/article/1404955273
Docker コンテナで MySQL を使ったテストの高速化
Docker を用いた rpm / deb パッケージ作成の継続的インテグレーションhttp://yuuki.hatenablog.com/entry/
docker-package-ci
アプリケーションだけじゃない
Docker を利用したperl-buildスクリプトのfatpack
Docker の活用例速い起動速度と揮発性を利用
fatpack• 依存モジュールをすべてひとつのscript
!leにまとめ、配布しやすくする
• App::FatPacker が使われる
• cpamn でも使用
perl-build• tokuhiromによるPerlをビルドするためのユーティリティモジュール・スクリプト
• ダウンロードとビルドを面倒見てくれる• plenvやxbuildで利用されている
• co-maintainerやってます
perl-build 使い方
$ curl -s https://raw.githubusercontent.com/tokuhirom/Perl-Build/master/perl-build | perl - 5.20.0 ~/local/perl-5.20
shell
依存モジュールのインストールなく使える
fatpackの手順• サポートしたい一番古いperlを用意
perl-buildでは “5.8.5”
• ExtUtils::MakeMaker のアップデートperl-5.12以前なら “6.56” をいれる
• cpanm, App::FatPacker をインストール
• 依存モジュールのインストール・アップデート
• fatpack
fatpackの手順• サポートしたい一番古いperlを用意
perl-buildでは “5.8.5”
• ExtUtils::MakeMaker のアップデートperl-5.12以前なら “6.56” をいれる
• cpanm, App::FatPacker をインストール
• 依存モジュールのインストール・アップデート
• fatpack
再利用が可能
Dockerを使ってみよっかー
FROM jmmills/plenv-base:latestRUN plenv install 5.8.5ENV PLENV_VERSION 5.8.5RUN curl -L http://cpanmin.us/ | plenv exec perl - -n ExtUtils::[email protected] curl -L http://cpanmin.us/ | plenv exec perl - -n App::cpanminusRUN curl -L http://cpanmin.us/ | plenv exec perl - -n Perl::Strip App::FatPackerRUN plenv rehashCMD bash -l -c 'cd /perl-build; cpanm -n --installdeps . ; bash author/fatpack.sh'
Docker!le
Dockerを使ったfatpack
$ git clone https://github.com/tokuhirom/Perl-Build.git$ cd Perl-Build/author$ docker build -t perl-build .$ docker run -v ../:/perl-build perl-build
GuestOS
Dockerを使ったfatpack
“Perl-Build” ディレクトリをコンテナ内の”/perl-build”にマウント
-v オプション毎回指定するの面倒だし、もっと言うと、Docker のインストールから
自動化したい。そうすると誰でも簡単に確実に
perl-buildのfatpackが実行できる
Vagrant + Docker の合わせ技
Vagrant+DockerVagrant.configure(2) do |config| config.vm.box = "hashicorp/precise64" config.vm.synced_folder "../", "/perl-build" config.vm.provision "docker", run: "always" do |d| d.build_image "/perl-build/author", args: "-t perl-build" end config.vm.provision "shell", run: "always", inline: "docker run -v /perl-build:/perl-build perl-build" config.vm.provision "destroy", destroy: false, run: "always"end
Vagrant!le
Vagrant+DockerVagrant.configure(2) do |config| config.vm.box = "hashicorp/precise64" config.vm.synced_folder "../", "/perl-build" config.vm.provision "docker", run: "always" do |d| d.build_image "/perl-build/author", args: "-t perl-build" end config.vm.provision "shell", run: "always", inline: "docker run -v /perl-build:/perl-build perl-build" config.vm.provision "destroy", destroy: false, run: "always"end
Vagrant!le/path/to/perl-buildをGuestOSの
/perl-buildにマウント
Vagrant+DockerVagrant.configure(2) do |config| config.vm.box = "hashicorp/precise64" config.vm.synced_folder "../", "/perl-build" config.vm.provision "docker", run: "always" do |d| d.build_image "/perl-build/author", args: "-t perl-build" end config.vm.provision "shell", run: "always", inline: "docker run -v /perl-build:/perl-build perl-build" config.vm.provision "destroy", destroy: false, run: "always"end
Vagrant!le/path/to/perl-buildをGuestOSの
/perl-buildにマウント
docker provisionerを使うと自動でGuestOSにdockerが入る
Vagrant+DockerVagrant.configure(2) do |config| config.vm.box = "hashicorp/precise64" config.vm.synced_folder "../", "/perl-build" config.vm.provision "docker", run: "always" do |d| d.build_image "/perl-build/author", args: "-t perl-build" end config.vm.provision "shell", run: "always", inline: "docker run -v /perl-build:/perl-build perl-build" config.vm.provision "destroy", destroy: false, run: "always"end
Vagrant!le/path/to/perl-buildをGuestOSの
/perl-buildにマウント
docker provisionerを使うと自動でGuestOSにdockerが入る
shell provisionerでdocker run
Vagrant+DockerVagrant.configure(2) do |config| config.vm.box = "hashicorp/precise64" config.vm.synced_folder "../", "/perl-build" config.vm.provision "docker", run: "always" do |d| d.build_image "/perl-build/author", args: "-t perl-build" end config.vm.provision "shell", run: "always", inline: "docker run -v /perl-build:/perl-build perl-build" config.vm.provision "destroy", destroy: false, run: "always"end
Vagrant!le/path/to/perl-buildをGuestOSの
/perl-buildにマウント
docker provisionerを使うと自動でGuestOSにdockerが入る
shell provisionerでdocker runGuestOSを自動で停止余計なリソース使わない
docker provisionerでdocker runを行わない理由
config.vm.provision "docker", run: "always" do |d| d.build_image "/perl-build/author", args: "-t perl-build" d.run “perl-build”end
Vagrant!le
docker provisionerで run
これだと、fatpackが終わる前に、vagrant upが終わり、元のシェルにもどってしまい、いつfatpackが完了するか分からない
Vagrant+Docker$ vagrant plugin install vagrant-destroy-provisioner$ vagrat up=> GuestOSの起動
=> docker provisionerでDockerイメージのビルド
=> shell provisioner経由でdocker run
==> 依存モジュールのインストール
==> fatpack$ git status ../perl-build..# modified: ../perl-build..$
MacOS X
fatpackしたperl-buildコマンドの動作チェックも Docker でやると
捗ると思うのでpull-req お待ちしています(_ _)
今日の内容• Docker の基本
• Docker!leとDockerイメージのビルド
• DockerでPerlを使う
• Dockerで自動化
• DockerでWebアプリケーション
DockerでWebアプリケーション
題材
WebアプリケーションのDocker への Deploy
FROM perl:v5.20
COPY . /opt/app
RUN carton install
CMD carton exec -- plackup
docker イメージ
docker buildFROM kazeburo/perl:v5.20RUN mkdir -p /opt/appCOPY ./cpanfile /opt/app/cpanfileCOPY ./cpanfile.snapshot /opt/app/cpanfile.snapshotWORKDIR /opt/appRUN carton install --deploymentEXPOSE 5000COPY . /opt/appCMD carton exec -- plackup -s Starlet --port 5000 -a app.psgi
Docker!le 先にcpan!leをコピーしcarton installを行う事で
cacheを有効活用
残りをコピー
docker build
local
.dockerignore
.gitignore と同じような役割local をコンテナ内にコピーしない
アプリケーションの起動$ docker build -t app .$ docker run -p 15000:5000 app
GuestOS
コンテナのPortHost側のPort
Vagrantでport_forward
Vagrant.configure(2) do |config| config.vm.box = "hashicorp/precise64" config.vm.network "forwarded_port", guest:15000, host:25000 config.vm.provision "docker", run: "always" do |d| d.pull_images "kazeburo/perl:v5.20" endend
Vagrant!le
Macのtcp 25000 をGuestOSの 15000 に
forward
Mac/Vagrant GuestOS コンテナ
50001500025000
ブラウザでの確認
http://127.0.0.1:25000/
Docker でWebアプリケーション残りの課題
• ログの取り扱い• MySQLなどの接続情報の受け渡し
• 性能評価• イメージビルド・デプロイ手段• 監視
まだまだ厳しい...
引き続き Docker で遊びながら最新情報を追っていきたいと
考えております
ご清聴ありがとうございました