SlideShare a Scribd company logo
1 of 128
Download to read offline
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 Docker 
Engine 
アプリケーションの 
共有と配布 
アプリケーションの 
パッケージング 
アプリケーションの 
実行 
コンテナ技術 
開発環境クラウドオンプレミス
コンテナ とは 
• アプリケーションを実行する環境をHostOS 
から隔離させ、それぞれに異なるリソース 
を提供する。その隔離されたプロセスの組 
を「コンテナ」という 
• アプリケーション毎に隔離された実行環境 
を用意する手段としてはVM(仮想マシン)も 
ある
Apps 
Bin/Libs 
Guest OS 
Hypervisor 
Host OS 
Server 
Apps 
Guest OS 
VM 
VM 
Bin/Libs 
VM 
Apps 
Bin/Libs 
Guest OS 
VM 
同じ独立性を確保しながら、よ 
り少ないリソースで動作する 
Apps 
Bin/Libs 
Apps 
Bin/Libs 
Apps 
Bin/Libs 
Docker Engine 
Host OS 
Server 
Container 
Container 
Container 
VMとコンテナ 
Container 
kernelは共有
コンテナの動作 
Container Process Container 
Docker Engine 
Host OS 
Server 
Process 
process A 
process B 
process C Docker EngineがHost OSから 
各リソースを隔離する 
Process
コンテナの動作 
隔離されるリソース 
• ファイルシステム 
• ネットワーク・ホスト名 
• プロセステーブル 
• ユーザ権限 
• CPU・メモリなどのリソース制御 
* Linux Kernelの機能を利用
Docker のインストール 
(Mac OS Xの場合)
Docker のインストール 
Linux Kernel が必要なので、Virtulbox, VMware 
などで仮想マシンを起動する必要がある 
1) boot2dockerを導入し、Mac上のdocker 
コマンドからAPIを経由して操作 
2) Vagrantで任意のLinuxディストリビュー 
ションを入れる
boot2docker 
• Dockerの起動に特化した軽量Linuxディ 
ストリビューション
boot2docker 
Process 
Container 
Process 
Container 
Process 
Docker Daemon 
boot2docker (linux) 
TCP 2375 
Docker 
Command VirtualBox 
Mac OS X 
APIを使ってDockerを制御 
Mac用DockerはAPIを呼ぶよ 
うに作られている
Vagrant 
• 仮想環境構築ツール。Vagrant!leと言わ 
れる設定ファイルを使うことで、自動 
的に仮想環境の構築ができる
boot2docker vs. Vagrant 
pros cons 
boot2docker 
・インストールが楽 
・Mac上からDockerを 
透過的に扱える 
・ファイル共有に 
難あり 
Vagrant 
・ファイル共有がしやすく 
柔軟に設定可能 
・Guest OSの機能を活用 
・Guest OSにログインする 
必要あり 
* 迷いにくい Vagrant を使っていきます
Install VirtualBox & Vagrant 
このあたりからダウンロー 
ドしてください
VagrantでDocker 手作業編 
Mac OS X 
$ mkdir vagrant-docker 
$ cd vagrant-docker 
$ vagrant init chef/centos-6.5 
$ vagrant up 
$ vagrant ssh
VagrantでDocker 手作業編 
Guest OS 
$ 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 -v 
Docker version 1.1.2, build d84a070/1.1.2
VagrantでDocker 自動化編 
Mac OS X 
$ cat Vagrantfile 
$script = <<EOF 
yum install -y http://download.fedoraproject.org/pub/ 
epel/6/x86_64/epel-release-6-8.noarch.rpm 
yum install -y docker-io 
/sbin/chkconfig docker on 
usermod -a -G docker vagrant 
EOF 
Vagrant.configure(2) do |config| 
config.vm.box = "chef/centos-6.5" 
config.vm.provision "shell", inline: $script 
end 
$ vagrant up 
初回起動時に自動で実行
“Hello World” 
Guest OS 
起動するベースDockerイメージ 
$ docker run ubuntu:14.04 echo Hello World 
Unable to find image 'ubuntu:14.04' locally 
Pulling repository ubuntu 
c4ff7513909d: Download complete 
511136ea3c5a: Download complete 
... 
cc58e55aa5a5: Download complete 
Hello World 
$
bash で入ってみる 
Guest OS 
stdinの維持とttyの割り当て 
$ docker run -i -t ubuntu:14.04 bash 
root@0840910014be:/# cat /etc/lsb-release | grep 
DESCRIPTION 
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS" 
root@0840910014be:/# exit 
$
コンテナのライフタイム 
time 
コンテナ起動`echo Hello World` 
プロセス終了 
コンテナも終了 
• OSではなくプロセス 
• プロセスの終了でコンテナが終了する 
• ファイルシステムへの変更も破棄される 
“揮発性のあるコンテナ”
揮発性の確認 
Guest OS 
$ docker run -i -t ubuntu:14.04 bash 
root@0840910014be:/# echo “hello world” > /tmp/foo 
root@0840910014be:/# exit 
exit 
$ docker run -i -t ubuntu:14.04 bash 
root@0840910014be:/# ls -l /tmp/foo 
ls: cannot access /tmp/foo: No such file or directory 
ファイルシステム破棄 
echo > /tmp 
`bash` `bash` 
time 
新しいコンテナ!
Docker の特徴まとめ 
• コンテナ技術を活用したアプリケーシ 
ョンの配布・実行のプラットフォーム 
• 揮発性のあるコンテナ 
• Docker!leと階層化イメージ 
次の話題
今日の内容 
• Docker の基本 
• Docker!leとDockerイメージのビルド 
• DockerでPerlを使う 
• Dockerで自動化 
• DockerでWebアプリケーション
Docker!leと 
Dockerイメージのビルド
Docker!le とは 
• Dockerでコンテナを起動する際のイメ 
ージを作る手続きを記したファイル
Docker!le 
Docker!le 
FROM centos:centos6 
MAINTAINER Masahiro Nagano <kazeburo@gmail.com> 
RUN yum install -y http://download.fedoraproject.org/ 
pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
RUN yum install -y sl 
CMD sl 
元となるイメージ 
build時に実行する 
コマンド 
docker run時に 
実行するコマンド
Dockerイメージの作成 #0 
Mac OS X 
$ ls 
Dockerfile Vagrantfile 
$ vagrant ssh 
Guest OS 
$ cd /vagrant 
$ ls 
Dockerfile Vagrantfile 
$ docker build -t localdev/sl . 
自動でGuestOSに 
マウントされる 
イメージに付けるTag名
Dockerイメージの作成 #1
Dockerイメージの作成 #2
docker build ログ 
Guest OS 
$ docker build -t localdev/sl . 
Step 0 : FROM centos:centos6 
Step 1 : MAINTAINER Masahiro Nagano <kazeburo@gmail.com> 
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 
---> a8d304eb9f7c 
Removing intermediate container 65df9252f6ff 
Successfully built a8d304eb9f7c 
$
docker build とイメージの作成 
Docker!le 
FROM centos:centos6 
MAINTAINER Masahiro Nagano 
<kazeburo@gmail.com> 
RUN yum install -y epel-release- 
6-8.noarch.rpm 
RUN yum install -y sl 
CMD sl 
ファイルシステムの変更点 
差分イメージを重ねて行く 
centos6 
Dockerはaufs、device-mapper、brtfsなどを使い、 
差分ファイルシステムを実現している
docker build とイメージの作成 
Docker!le 
FROM centos:centos6 
MAINTAINER Masahiro Nagano 
<kazeburo@gmail.com> 
RUN yum install -y epel-release- 
6-8.noarch.rpm 
RUN yum install -y sl 
CMD sl 
ファイルシステムの変更点 
差分イメージを重ねて行く 
epel 
centos6 
Dockerはaufs、device-mapper、brtfsなどを使い、 
差分ファイルシステムを実現している
docker build とイメージの作成 
Docker!le 
FROM centos:centos6 
MAINTAINER Masahiro Nagano 
<kazeburo@gmail.com> 
RUN yum install -y epel-release- 
6-8.noarch.rpm 
RUN yum install -y sl 
CMD sl 
ファイルシステムの変更点 
差分イメージを重ねて行く 
sl 
epel 
centos6 
Dockerはaufs、device-mapper、brtfsなどを使い、 
差分ファイルシステムを実現している
docker build とイメージの作成 
Docker!le 
FROM centos:centos6 
MAINTAINER Masahiro Nagano 
<kazeburo@gmail.com> 
RUN yum install -y epel-release- 
6-8.noarch.rpm 
RUN yum install -y sl 
CMD sl 
ファイルシステムの変更点 
差分イメージを重ねて行く 
CMD 
sl 
epel 
centos6 
Dockerはaufs、device-mapper、brtfsなどを使い、 
差分ファイルシステムを実現している
差分イメージの枝構造 
FROM centos:centos6 
RUN yum install -y epel.rpm 
RUN yum install -y sl 
CMD sl 
centos6 
base 
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 
centos6 
base 
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 
centos6 
base 
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 
centos6 
base 
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 
centos6 
base 
epel 
sl fortune 
Docker!leに変更を加えると 
そこから枝が分かれる。 
幹は共有する 
CMD CMD
差分イメージの利点 
• イメージをネットワーク転送する際に 
差分のみの転送することで、通信にか 
かる時間を減らす 
• ビルド時に変更点がない箇所の再ビル 
ドを行わずに済み、効率がよい 
docker build --no-cache で 
強制再ビルドできる
Docker!leの 
よく使うコマンド
“FROM” 
ベースDockerイメージの指定 
Docker!le 
FROM <name>:<tag> 
ベースとなるDockerイメージ名 
tagを省略すると、latestを使用
“RUN” 
コマンドの実行 
Docker!le 
RUN command args args 
RUN [“command”,”args”,”args”] 
上は [“bash”, ”-c”, “command args args”] 
Docker!le 
RUN curl -L http://cpanmin.us/ | perl - -n App::cpanminus
“COPY” 
HostOSからコンテナへのファイルコピー 
Docker!le 
COPY src dest
“COPY” 
HostOSからコンテナへのファイルコピー 
Docker!le 
COPY src dest 
Docker!le 
COPY ../src dest
“COPY” 
HostOSからコンテナへのファイルコピー 
Docker!le 
COPY src dest 
Docker!le 
COPY ../src dest 
docker build時にDocker!leのあるディレクトリを 
一時的に領域にコピーしてからビルド開始するので 
ディレクトリをさかのぼることはできない
“COPY” 
HostOSからコンテナへのファイルコピー 
FROM centos:centos6 
COPY README.md /opt/ 
README.md 
RUN yum install -y sl 
CMD sl 
centos6 
base 
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 
centos6 
base 
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 
centos6 
base 
COPY 
$ touch README.md 
$ docker build . 
sl sl’ 
CMD CMD’
“ADD”
“ADD” 
COPYより前からあるコマンド 
URIを指定できたり、tarファイルを 
自動解凍できる 
必要なければ使わない方がよい
“ENV” 
環境変数 
Docker!le 
ENV KEY NAME 
Docker!le 
ENV PLACK_ENV production 
ENV PATH $PATH:/opt/local/perl-5.20/bin 
変数も使用できる
“CMD” 
docker run時に起動するコマンド 
Docker!le 
CMD command args args 
CMD [“command”,”args”,”args”] 
上は [“bash”, ”-c”, “command args args”] 
 “RUN” と一緒
“EXPOSE” 
コンテナ内のプロセスがListenするポート 
Docker!le 
EXPORT PORT_NUM 
Docker!le 
EXPORT 11211 
CMD memcached -p 11211 -u nobody -m 1024 -c 100000 
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 
Guest OS 
$ docker run -i -t ubuntu:14.04 bash 
root@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 the 
GNU General Public License, which may be found in the Perl 5 source kit. 
Complete documentation for Perl, including FAQ lists, should be found on 
this system using "man perl" or "perldoc perl". If you have access to the 
Internet, point your browser at http://www.perl.org/, the Perl Home Page. 
root@8ac58f29a17a:/# 
ubuntuの場合
System Perl 
Guest OS 
$ docker run -i -t centos:centos6 bash 
CentOSの場合
System Perl 
Guest OS 
$ docker run -i -t centos:centos6 bash 
bash-4.1# perl -v 
CentOSの場合
System Perl 
Guest OS 
$ docker run -i -t centos:centos6 bash 
bash-4.1# perl -v 
bash: perl: command not found 
bash-4.1# 
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 
buildの過程にpush 
人の手が入らない
Dockerイメージを選ぶ基準
Dockerイメージを選ぶ基準 
automated build 
Docker!le 
github repository
おすすめ Docker イメージ 
• perl 
• jmmills/plenv 
• kazeburo/perl 
• 自分で作る
kazeburo/perl の使い方 
Guest OS 
$ docker run -i -t kazeburo/perl:v5.18 perl -v 
This is perl 5, version 18, subversion 1 (v5.18.1) built for 
x86_64-linux 
Copyright 1987-2013, Larry Wall 
.. 
$
kazeburo/perl の使い方 
Docker!le 
FROM kazeburo/perl:v5.18 
RUN cpanm -n Plack 
CMD plackup -v 
cpanmも導入済み 
GuestOS 
$ docker build -t localdev/perl . 
$ docker run localdev/perl 
Plack 1.0031 
$
今日の内容 
• Docker の基本 
• Docker!leとDockerイメージのビルド 
• DockerでPerlを使う 
• Dockerで自動化 
• DockerでWebアプリケーション
Docker で自動化
Docker の主な利用法 
≒ 
(Web)アプリケーションの実行
Docker の活用例 
速い起動速度と揮発性を利用 
Docker コンテナで MySQL を 
使ったテストの高速化 
http://blog.linknode.net/article/1404955273 
アプリケーション 
だけじゃない 
Docker を用いた rpm / deb パッケージ 
作成の継続的インテグレーション 
http://yuuki.hatenablog.com/entry/ 
docker-package-ci
Docker の活用例 
速い起動速度と揮発性を利用 
Docker を利用したperl-buildスクリプトのfatpack
fatpack 
• 依存モジュールをすべてひとつのscript 
!leにまとめ、配布しやすくする 
• App::FatPacker が使われる 
• cpamn でも使用
perl-build 
• tokuhiromによるPerlをビルドするための 
ユーティリティモジュール・スクリプト 
• ダウンロードとビルドを面倒見てくれる 
• plenvやxbuildで利用されている 
• co-maintainerやってます
perl-build 使い方 
shell 
$ curl -s https://raw.githubusercontent.com/ 
tokuhirom/Perl-Build/master/perl-build | perl - 
5.20.0 ~/local/perl-5.20 
依存モジュールの 
インストールなく使える
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を使ってみよっかー
Dockerを使ったfatpack 
Docker!le 
FROM jmmills/plenv-base:latest 
RUN plenv install 5.8.5 
ENV PLENV_VERSION 5.8.5 
RUN curl -L http://cpanmin.us/ | plenv exec perl - -n 
ExtUtils::MakeMaker@6.56 
RUN curl -L http://cpanmin.us/ | plenv exec perl - -n 
App::cpanminus 
RUN curl -L http://cpanmin.us/ | plenv exec perl - -n 
Perl::Strip App::FatPacker 
RUN plenv rehash 
CMD bash -l -c 'cd /perl-build; cpanm -n -- 
installdeps . ; bash author/fatpack.sh'
Dockerを使ったfatpack 
GuestOS 
$ 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 
“Perl-Build” ディレクトリを 
コンテナ内の”/perl-build”にマウント
-v オプション毎回指定するの 
面倒だし、もっと言うと、 
Docker のインストールから 
自動化したい。 
そうすると誰でも簡単に確実に 
perl-buildのfatpackが実行できる
Vagrant + Docker の 
合わせ技
Vagrant+Docker 
Vagrant!le 
Vagrant.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+Docker 
Vagrant!le 
/path/to/perl-buildをGuestOSの 
Vagrant.configure(2) do |config| 
config.vm.box = "hashicorp/precise64" 
config.vm.synced_folder "../", "/perl-build" 
config.vm.provision "docker", run: "always" do |d| 
/perl-buildにマウント 
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+Docker 
Vagrant!le 
/path/to/perl-buildをGuestOSの 
Vagrant.configure(2) do |config| 
config.vm.box = "hashicorp/precise64" 
config.vm.synced_folder "../", "/perl-build" 
config.vm.provision "docker", run: "always" do |d| 
/perl-buildにマウント 
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 
docker provisionerを使うと 
自動でGuestOSにdockerが入る
Vagrant+Docker 
Vagrant!le 
/path/to/perl-buildをGuestOSの 
Vagrant.configure(2) do |config| 
config.vm.box = "hashicorp/precise64" 
config.vm.synced_folder "../", "/perl-build" 
config.vm.provision "docker", run: "always" do |d| 
/perl-buildにマウント 
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 
docker provisionerを使うと 
自動でGuestOSにdockerが入る 
shell provisionerでdocker run
Vagrant+Docker 
Vagrant!le 
/path/to/perl-buildをGuestOSの 
Vagrant.configure(2) do |config| 
config.vm.box = "hashicorp/precise64" 
config.vm.synced_folder "../", "/perl-build" 
config.vm.provision "docker", run: "always" do |d| 
/perl-buildにマウント 
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 
docker provisionerを使うと 
自動でGuestOSにdockerが入る 
GuestOSを自動で停止shell provisionerでdocker run 
余計なリソース使わない
docker provisionerで 
docker runを行わない理由 
Vagrant!le 
config.vm.provision "docker", run: "always" do |d| 
d.build_image "/perl-build/author", args: "-t perl-build" 
d.run “perl-build” 
end 
docker provisionerで run 
これだと、fatpackが終わる前に、vagrant upが終わり、 
元のシェルにもどってしまい、いつfatpackが完了するか分からない
Vagrant+Docker 
MacOS X 
$ vagrant plugin install vagrant-destroy-provisioner 
$ vagrat up 
=> GuestOSの起動 
=> docker provisionerでDockerイメージのビルド 
=> shell provisioner経由でdocker run 
==> 依存モジュールのインストール 
==> fatpack 
$ git status ../perl-build 
.. 
# modified: ../perl-build 
.. 
$
fatpackしたperl-buildコマンドの 
動作チェックも Docker でやると 
捗ると思うので 
pull-req お待ちしています(_ _)
今日の内容 
• Docker の基本 
• Docker!leとDockerイメージのビルド 
• DockerでPerlを使う 
• Dockerで自動化 
• DockerでWebアプリケーション
Dockerで 
Webアプリケーション
題材
Webアプリケーションの 
Docker への Deploy 
CMD carton exec -- plackup 
RUN carton install 
COPY . /opt/app 
FROM perl:v5.20 
docker イメージ
docker build 
Docker!le 先にcpan!leをコピーし 
carton installを行う事で 
FROM kazeburo/perl:v5.20 
RUN mkdir -p /opt/app 
cacheを有効活用 
COPY ./cpanfile /opt/app/cpanfile 
COPY ./cpanfile.snapshot /opt/app/cpanfile.snapshot 
WORKDIR /opt/app 
RUN carton install --deployment 
EXPOSE 5000 
残りをコピー 
COPY . /opt/app 
CMD carton exec -- plackup -s Starlet --port 5000 -a app.psgi
docker build 
.dockerignore 
local 
.gitignore と同じような役割 
local をコンテナ内にコピーしない
アプリケーションの起動 
GuestOS 
$ docker build -t app . 
$ docker run -p 15000:5000 app 
Host側のPort コンテナのPort
Vagrantでport_forward 
Vagrant!le 
Vagrant.configure(2) do |config| 
config.vm.box = "hashicorp/precise64" 
config.vm.network "forwarded_port", 
Macのtcp 25000 を 
GuestOSの 15000 に 
forward 
guest:15000, host:25000 
config.vm.provision "docker", run: "always" do |d| 
d.pull_images "kazeburo/perl:v5.20" 
end 
end 
Mac/ 
Vagrant GuestOS 25000 15000 5000 コンテナ
ブラウザでの確認 
http://127.0.0.1:25000/
Docker でWebアプリケーション 
残りの課題 
• ログの取り扱い 
• MySQLなどの接続情報の受け渡し 
• 性能評価 
• イメージビルド・デプロイ手段 
• 監視 
まだまだ厳しい...
引き続き Docker で遊びながら 
最新情報を追っていきたいと 
考えております
ご清聴ありがとうございました

More Related Content

What's hot

【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座Masahito Zembutsu
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーションMasahito Zembutsu
 
爆速プレビュープロキシ pool
爆速プレビュープロキシ pool爆速プレビュープロキシ pool
爆速プレビュープロキシ poolmookjp
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 
【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化Yuki Kanazawa
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜Shuji Yamada
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Masahito Zembutsu
 
Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~Masahito Zembutsu
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念Masahito Zembutsu
 
コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響Masahito Zembutsu
 
今日から始めるDigitalOcean
今日から始めるDigitalOcean今日から始めるDigitalOcean
今日から始めるDigitalOceanMasahito Zembutsu
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようmookjp
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Masahito Zembutsu
 
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Masahito Zembutsu
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門Tsukasa Kato
 
Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技Masahito Zembutsu
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Masahito Zembutsu
 

What's hot (20)

【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
 
爆速プレビュープロキシ pool
爆速プレビュープロキシ pool爆速プレビュープロキシ pool
爆速プレビュープロキシ pool
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
 
【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
 
Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
 
コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響
 
今日から始めるDigitalOcean
今日から始めるDigitalOcean今日から始めるDigitalOcean
今日から始めるDigitalOcean
 
DockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみようDockerでWordPressサイトを開発してみよう
DockerでWordPressサイトを開発してみよう
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19
 
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 
Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
 

Viewers also liked

Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LTWeb Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LTMasahiro Nagano
 
JSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedJSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedKazuho Oku
 
Introducing Swift - and the Sunset of Our Culture?
Introducing Swift - and the Sunset of Our Culture?Introducing Swift - and the Sunset of Our Culture?
Introducing Swift - and the Sunset of Our Culture?dankogai
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月Masahiro Nagano
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバるDaigou Harada
 
Webアプリケーションとメモリ
WebアプリケーションとメモリWebアプリケーションとメモリ
WebアプリケーションとメモリMasahiro Nagano
 
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版Masahiro Nagano
 
Webアプリケーションの パフォーマンス向上のコツ 概要編
 Webアプリケーションの パフォーマンス向上のコツ 概要編 Webアプリケーションの パフォーマンス向上のコツ 概要編
Webアプリケーションの パフォーマンス向上のコツ 概要編Masahiro Nagano
 
Webアプリケーションの パフォーマンス向上のコツ 実践編
 Webアプリケーションの パフォーマンス向上のコツ 実践編 Webアプリケーションの パフォーマンス向上のコツ 実践編
Webアプリケーションの パフォーマンス向上のコツ 実践編Masahiro Nagano
 
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Hiroshi Tokumaru
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Panda Yamaki
 
ゲームの中の人工知能
ゲームの中の人工知能ゲームの中の人工知能
ゲームの中の人工知能Youichiro Miyake
 
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTGazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTMasahiro Nagano
 
Mackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMasahiro Nagano
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版信之 岩永
 
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?Hiroshi Tokumaru
 
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTMasahiro Nagano
 

Viewers also liked (20)

Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LTWeb Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
 
JSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedJSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons Learned
 
Introducing Swift - and the Sunset of Our Culture?
Introducing Swift - and the Sunset of Our Culture?Introducing Swift - and the Sunset of Our Culture?
Introducing Swift - and the Sunset of Our Culture?
 
Handling not so big data
Handling not so big dataHandling not so big data
Handling not so big data
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバる
 
Webアプリケーションとメモリ
WebアプリケーションとメモリWebアプリケーションとメモリ
Webアプリケーションとメモリ
 
Hello, systemd
Hello, systemdHello, systemd
Hello, systemd
 
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
 
Webアプリケーションの パフォーマンス向上のコツ 概要編
 Webアプリケーションの パフォーマンス向上のコツ 概要編 Webアプリケーションの パフォーマンス向上のコツ 概要編
Webアプリケーションの パフォーマンス向上のコツ 概要編
 
Webアプリケーションの パフォーマンス向上のコツ 実践編
 Webアプリケーションの パフォーマンス向上のコツ 実践編 Webアプリケーションの パフォーマンス向上のコツ 実践編
Webアプリケーションの パフォーマンス向上のコツ 実践編
 
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
 
ゲームの中の人工知能
ゲームの中の人工知能ゲームの中の人工知能
ゲームの中の人工知能
 
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTGazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
 
Mackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LT
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
 
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
 
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
 

Similar to Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014

Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門hiro nemu
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようTakashi Makino
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と DockerのキホンNaoki Nagazumi
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
DockerハンズオンKazuyuki Mori
 
Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519虎の穴 開発室
 
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオンWebアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン虎の穴 開発室
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもんMasahito Zembutsu
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料teruyaono1
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Microsoft Corporation
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例maebashi
 
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方ゆるふわなDockerの使い方
ゆるふわなDockerの使い方Kento Aoyama
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修Suguru Yazawa
 
コンテナ on Windows
コンテナ on Windowsコンテナ on Windows
コンテナ on WindowsTsubasa Nomura
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築MILI-LLC
 
Docker handson
Docker handsonDocker handson
Docker handsonkoda3
 
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見るDockerでlamp環境を作って見る
Dockerでlamp環境を作って見るzhengen lin
 

Similar to Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014 (20)

Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519Webアプリケーション開発者のためのDockerハンズオン20210519
Webアプリケーション開発者のためのDockerハンズオン20210519
 
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオンWebアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン
 
Docker Swarm入門
Docker Swarm入門Docker Swarm入門
Docker Swarm入門
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方ゆるふわなDockerの使い方
ゆるふわなDockerの使い方
 
Docker社内勉強会
Docker社内勉強会Docker社内勉強会
Docker社内勉強会
 
Newcomer2020 Docker研修
Newcomer2020 Docker研修Newcomer2020 Docker研修
Newcomer2020 Docker研修
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
 
コンテナ on Windows
コンテナ on Windowsコンテナ on Windows
コンテナ on Windows
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
Docker handson
Docker handsonDocker handson
Docker handson
 
Docker v14
Docker v14Docker v14
Docker v14
 
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見るDockerでlamp環境を作って見る
Dockerでlamp環境を作って見る
 

More from Masahiro Nagano

Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinMasahiro Nagano
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Masahiro Nagano
 
Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Masahiro Nagano
 
Stream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LTStream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LTMasahiro Nagano
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015Masahiro Nagano
 
メルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてメルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてMasahiro Nagano
 
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術Masahiro Nagano
 
Isucon makers casual talks
Isucon makers casual talksIsucon makers casual talks
Isucon makers casual talksMasahiro Nagano
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べMasahiro Nagano
 
Gazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapmGazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapmMasahiro Nagano
 
最近作ったN個のCPANモジュール Yokohama.pm #10
最近作ったN個のCPANモジュール Yokohama.pm #10最近作ったN個のCPANモジュール Yokohama.pm #10
最近作ったN個のCPANモジュール Yokohama.pm #10Masahiro Nagano
 
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題Masahiro Nagano
 
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server Masahiro Nagano
 
Apache::LogFormat::Compiler YAPC::Asia 2013 Tokyo LT-Thon
Apache::LogFormat::Compiler YAPC::Asia 2013 Tokyo LT-ThonApache::LogFormat::Compiler YAPC::Asia 2013 Tokyo LT-Thon
Apache::LogFormat::Compiler YAPC::Asia 2013 Tokyo LT-ThonMasahiro Nagano
 
1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)Masahiro Nagano
 
グラフで捗る話#2 kansai.pm#14
グラフで捗る話#2 kansai.pm#14グラフで捗る話#2 kansai.pm#14
グラフで捗る話#2 kansai.pm#14Masahiro Nagano
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 

More from Masahiro Nagano (20)

Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
 
Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Big Master Data PHP BLT #1
Big Master Data PHP BLT #1
 
Stream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LTStream processing in Mercari - Devsumi 2015 autumn LT
Stream processing in Mercari - Devsumi 2015 autumn LT
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
 
メルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてメルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えて
 
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
 
Isucon makers casual talks
Isucon makers casual talksIsucon makers casual talks
Isucon makers casual talks
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
 
Gazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapmGazelle - Plack Handler for performance freaks #yokohamapm
Gazelle - Plack Handler for performance freaks #yokohamapm
 
最近作ったN個のCPANモジュール Yokohama.pm #10
最近作ったN個のCPANモジュール Yokohama.pm #10最近作ったN個のCPANモジュール Yokohama.pm #10
最近作ったN個のCPANモジュール Yokohama.pm #10
 
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
 
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server
 
Apache::LogFormat::Compiler YAPC::Asia 2013 Tokyo LT-Thon
Apache::LogFormat::Compiler YAPC::Asia 2013 Tokyo LT-ThonApache::LogFormat::Compiler YAPC::Asia 2013 Tokyo LT-Thon
Apache::LogFormat::Compiler YAPC::Asia 2013 Tokyo LT-Thon
 
MHA for MySQL の話
MHA for MySQL の話MHA for MySQL の話
MHA for MySQL の話
 
1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)
 
監視ツールの話
監視ツールの話監視ツールの話
監視ツールの話
 
捗れ!Operation
捗れ!Operation捗れ!Operation
捗れ!Operation
 
グラフで捗る話#2 kansai.pm#14
グラフで捗る話#2 kansai.pm#14グラフで捗る話#2 kansai.pm#14
グラフで捗る話#2 kansai.pm#14
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 

Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014