SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
2014/04/12 shin1x1
第3回 コンテナ型仮想化の情報交換会@大阪
Vagrantユーザための
Docker入門
Agenda
(c) 2014 Masashi Shinbara @shin1x1
• Dockerとは
• Dockerを触ってみる
• Vagrantとの比較
• ユースケースに見る
• まとめ
忙しい人のための
Docker解説
(c) 2014 Masashi Shinbara @shin1x1
(c) 2014 Masashi Shinbara @shin1x1
Dockerの特徴1
コンテナ型なので
起動マジ速い!
(c) 2014 Masashi Shinbara @shin1x1
Dockerの特徴2
レイヤードファイルシステム
ディスク、ネットワーク節約

マジeco !!
(c) 2014 Masashi Shinbara @shin1x1
Dockerの特徴3
コンテナがどこでも動く
マジポータブル!
(c) 2014 Masashi Shinbara @shin1x1
Cool だろ?
Dockerとは
(c) 2014 Masashi Shinbara @shin1x1
(c) 2014 Masashi Shinbara @shin1x1
Dockerとは
• Docker社(旧dotCloud社)が開発したOSS
• golang で実装
• コンテナ技術を使った軽量な仮想環境
• レイヤによる差分ファイルシステム
• コンテナ(イメージ)配布システム
(c) 2014 Masashi Shinbara @shin1x1
Docker について
http://www.slideshare.net/dotCloud/docker-intro-
november
(c) 2014 Masashi Shinbara @shin1x1
コンテナとVM
http://www.slideshare.net/dotCloud/docker-intro-november
(c) 2014 Masashi Shinbara @shin1x1
Dockerコンテナ
http://www.slideshare.net/dotCloud/docker-intro-november
(c) 2014 Masashi Shinbara @shin1x1
Dockerシステム概要
http://www.slideshare.net/dotCloud/docker-intro-november
(c) 2014 Masashi Shinbara @shin1x1
Dockerコンテナの更新
http://www.slideshare.net/dotCloud/docker-intro-november
(c) 2014 Masashi Shinbara @shin1x1
レイヤファイルシステム
http://docs.docker.io/en/latest/terms/image/
(c) 2014 Masashi Shinbara @shin1x1
レイヤファイルシステム
http://docs.docker.io/en/latest/terms/image/
(c) 2014 Masashi Shinbara @shin1x1
レイヤファイルシステム
http://docs.docker.io/en/latest/terms/image/
(c) 2014 Masashi Shinbara @shin1x1
レイヤファイルシステム
http://docs.docker.io/en/latest/terms/image/
Dockerを
触ってみる
(c) 2014 Masashi Shinbara @shin1x1
(c) 2014 Masashi Shinbara @shin1x1
OSXで試す
• OSX では、Docker コマンドだけ使えるが、

Dockerコンテナは動かない
• VM 等で、Linux 環境を用意する
• Linux 環境として、boot2docker が手軽
• 今回は、Vagrant で CentOS 環境を使う
(c) 2014 Masashi Shinbara @shin1x1
なぜ boot2docker 使わない?
• Vagrant なら、IP の割り当てが楽
• Vagrant なら、synced_folder が便利
• VM の起動は時間がかかるが、あとは一緒
(c) 2014 Masashi Shinbara @shin1x1
インストール(OSX)
!
$ brew install docker!
• Homebrew で docker インストール
(c) 2014 Masashi Shinbara @shin1x1
Linux環境を用意(OSX)
!
$ git clone https://github.com/shin1x1/vagrant-
centos-docker.git!
$ cd vagrant-centos-docker!
$ vagrant up!
• Vagrant で Docker デーモン(CentOS)を起動
(c) 2014 Masashi Shinbara @shin1x1
CentOSでのDocker
$ sudo sed -i 's,^other_args="",other_args="-H
tcp://0.0.0.0:4243 -H unix:// -dns
8.8.8.8",g' /etc/sysconfig/docker
• unixドメインソケットでのみ通信可能なので、

TCP/IP で待ち受けるように変更
• /etc/sysconfig/docker
other_args="-H tcp://0.0.0.0:4243 -H unix:// -dns 8.8.8.8"
(c) 2014 Masashi Shinbara @shin1x1
Dockerホスト設定(OSX)
!
$ docker -H tcp://localhost:4243 info!
• Docker コマンドに -H オプションで指定
!
$ export DOCKER_HOST=tcp://localhost:4243!
$ docker info!
• 環境変数で設定しておくと楽
(c) 2014 Masashi Shinbara @shin1x1
ベースイメージ取得
$ docker search centos
• イメージを探す
$ docker pull centos
• イメージのダウンロード
$ docker images!
REPOSITORY TAG IMAGE ID CREATED VIRTUAL
SIZE!
centos 6.4 539c0211cd76 12 months ago 300.6 MB!
centos latest 539c0211cd76 12 months ago 300.6 MB
• キャッシュしているイメージを表示
(c) 2014 Masashi Shinbara @shin1x1
コンテナを起動
$ docker run centos cat /etc/redhat-release!
CentOS release 6.4 (Final)
• コンテナを起動して、cat を実行
$ docker run -i -t centos /bin/bash !
bash-4.1#
• コンテナを起動して、Bash を実行
(c) 2014 Masashi Shinbara @shin1x1
実行コンテナを確認
$ docker ps!
CONTAINER ID IMAGE COMMAND CREATED !
fa7c9e516c61 centos:6.4 /bin/bash 6 minutes ago
• 実行中コンテナを表示
$ docker ps -a!
CONTAINER ID IMAGE COMMAND CREATED STATUS!
8a021062464e centos:6.4 /bin/bash 7 seconds ago Up 6 seconds!
5dd90f9483d3 centos:6.4 cat /etc/redhat-rele 29 seconds ago Exit 0
• 全て(停止コンテナ含めて)表示
(c) 2014 Masashi Shinbara @shin1x1
コンテナをイメージ化
$ docker commit CONTAINER_ID IMAGE_NAME!
xxxxxxxxxxxxxxxxxxxxx!
!
$ docker images!
!
$ docker run IMAGE_NAME php -v!
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)!
Copyright (c) 1997-2010 The PHP Group!
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
• コンテナをイメージ化
(c) 2014 Masashi Shinbara @shin1x1
コンテナ構築を自動化
$ vim Dockerfile!
FROM centos!
MAINTAINER shin1x1 <shin1x1@gmail.com>!
!
#!
# httpd!
RUN yum -y install httpd!
!
#!
# PHP!
RUN yum -y install php!
!
CMD ["/usr/sbin/apachectl", "-DFOREGROUND"]!
• Dockerfile に構築手順を書く
(c) 2014 Masashi Shinbara @shin1x1
コンテナ構築を自動化
$ docker build -t shin1x1/httpd_php .!
Uploading context 150 kB!
Uploading context!
Step 0 : FROM centos!
---> 539c0211cd76!
Step 1 : MAINTAINER shin1x1 <shin1x1@gmail.com>!
---> Using cache!
---> b84d1c89ba69!
Step 2 : RUN yum -y install httpd!
---> Using cache!
---> 7abc65b054a8!
Step 3 : RUN yum -y install php!
---> Using cache!
---> 792d88165f34!
Step 4 : CMD ["/usr/sbin/apachectl", "-DFOREGROUND"]!
---> Using cache!
---> 04626460b476!
Successfully built 04626460b476
• イメージをビルド
(c) 2014 Masashi Shinbara @shin1x1
コンテナ構築を自動化
$ docker run shin1x1/httpd_php php -v!
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)!
Copyright (c) 1997-2010 The PHP Group!
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies!
• 構築したイメージをコンテナとして起動
(c) 2014 Masashi Shinbara @shin1x1
コンテナをサービス化
$ docker run -d -p 80:80 shin1x1/httpd_php!
xxxxxxxxxxxxxxxxxxxxxxxx!
• -d = コンテナをバックグラウンドで動かす
• -p = ポートマッピング(ホスト:コンテナ)
• -v = ホストディレクトリをコンテナからマウント
• コンテナのプロセスはフォアグラウンドで動かす
• http://192.168.33.10/ でアクセス可能
(c) 2014 Masashi Shinbara @shin1x1
Vagrantとの比較
※Vagrant で VirtualBox を使う際と比較
(c) 2014 Masashi Shinbara @shin1x1
速くなったVagrant?
• いいえ、違います。
• ユースケースは似てるとこもありますが、

異なるものと思ったほうが良いです。
(c) 2014 Masashi Shinbara @shin1x1
似てるところ
• 独立した仮想環境が容易に作れる
• ベースイメージを利用
• 構築手順(Dockerfile, Vagrantfile)を

書いて、自動構築
• どの環境でも同じ環境が作れる
(c) 2014 Masashi Shinbara @shin1x1
違うところ
• 動作方式(ハイパーバイザー型とコンテナ型)
• 起動速度
• ファイルシステム

(フルバックアップと差分バックアップ)
• ポータビリティ
• 想定しているユースケース
(c) 2014 Masashi Shinbara @shin1x1
ユースケースに見る
VagrantとDocker
(c) 2014 Masashi Shinbara @shin1x1
検証環境に使う
• ミドルウェアのインストールや設定の検証など
• 手軽に作って、壊してができるので良い
• 検証用のベース image を用意しておく
• image のキャッシュを生かすため

同じ VM 上で Docker デーモンを動かす
(c) 2014 Masashi Shinbara @shin1x1
開発環境に使う
• OSX の IDEで書いて、コードの実行はVM

=> Vagrant の synced_folder を利用
• プロジェクト毎に独立した環境にしたい

=> Vagrant の方がより独立した環境に
• 全く同じ環境にしたい

=> アクセス IP も固定した方が吉
• OSXでは、どのみちVMが必要
• Vagrant 内でプロビジョナで Docker 使うならアリ
(c) 2014 Masashi Shinbara @shin1x1
CI環境に使う
• Jenkinsでオールテスト実行環境として利用
• ビルドの度にコンテナを生成して、テスト実行
• ビルド毎に独立した環境
• 軽量な動作で複数実行されても問題無い
• いま、一番導入しやすいところ
• Vagrant だとオーバーヘッドが大きい
(c) 2014 Masashi Shinbara @shin1x1
CI運用例
Mac
private repo
(1) git push
CI サーバ(さくらVPS)
(2) hook
(3) git pull
(4) docker build & docker run
(c) 2014 Masashi Shinbara @shin1x1
CI運用例
• Jenkinsプロジェクト設定(シェルの実行)
sudo docker build -t ${JOB_NAME} .!
sudo docker run -v ${WORKSPACE}/src:/share ${JOB_NAME}
(c) 2014 Masashi Shinbara @shin1x1
本番環境に使う
• Docker の主戦場
• PaaS / DaaS (Docker as a Service)
• サーバでコンテナビルド?
• ビルドしたコンテナをpush?
• まだ模索中…
(c) 2014 Masashi Shinbara @shin1x1
まとめ
(c) 2014 Masashi Shinbara @shin1x1
まとめ
• 軽量でポータブルなコンテナ
• OSXで使うなら、VM が必要
• Docker ≠ better Vagrant
@shin1x1
(c) 2014 Masashi Shinbara @shin1x1
PHPカンファレンス関西2014
(c) 2014 Masashi Shinbara @shin1x1
http://conference.kphpug.jp/2014/
• 2014/06/28(土)
• 大阪産業創造館
• セッション募集中!!

Weitere ähnliche Inhalte

Was ist angesagt?

Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Masahito Zembutsu
 
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundryコンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud FoundryKazuto Kusama
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪Kunihiro TANAKA
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみたKatsutoshi Nagaoka
 
Weaveを試してみた
Weaveを試してみたWeaveを試してみた
Weaveを試してみたKazuto Kusama
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来Kazuto Kusama
 
普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見zaru sakuraba
 
Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Nakazawa Yuichi
 
Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~Masahito Zembutsu
 
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするAnsibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするRyo Adachi
 
Kubernetesにまつわるエトセトラ(主に苦労話)
Kubernetesにまつわるエトセトラ(主に苦労話)Kubernetesにまつわるエトセトラ(主に苦労話)
Kubernetesにまつわるエトセトラ(主に苦労話)Works Applications
 
開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみたpyar6329
 
microPCFを使ってみよう
microPCFを使ってみようmicroPCFを使ってみよう
microPCFを使ってみようHiroaki_UKAJI
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Masahiro Nagano
 
DockerからKubernetesへのシフト
DockerからKubernetesへのシフトDockerからKubernetesへのシフト
DockerからKubernetesへのシフトmasaki nakayama
 

Was ist angesagt? (20)

Dockerを社内で使うために
Dockerを社内で使うためにDockerを社内で使うために
Dockerを社内で使うために
 
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
 
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundryコンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundry
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Docker Swarm入門
Docker Swarm入門Docker Swarm入門
Docker Swarm入門
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
 
GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
 
Vagrant体験入門
Vagrant体験入門Vagrant体験入門
Vagrant体験入門
 
Weaveを試してみた
Weaveを試してみたWeaveを試してみた
Weaveを試してみた
 
ECS-CLI in Action
ECS-CLI in ActionECS-CLI in Action
ECS-CLI in Action
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
 
普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見
 
Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築
 
Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~
 
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするAnsibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングする
 
Kubernetesにまつわるエトセトラ(主に苦労話)
Kubernetesにまつわるエトセトラ(主に苦労話)Kubernetesにまつわるエトセトラ(主に苦労話)
Kubernetesにまつわるエトセトラ(主に苦労話)
 
開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた
 
microPCFを使ってみよう
microPCFを使ってみようmicroPCFを使ってみよう
microPCFを使ってみよう
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
DockerからKubernetesへのシフト
DockerからKubernetesへのシフトDockerからKubernetesへのシフト
DockerからKubernetesへのシフト
 

Andere mochten auch

2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーションOperation Lab, LLC.
 
No Monitoring, No Life on AWS
No Monitoring, No Life on AWSNo Monitoring, No Life on AWS
No Monitoring, No Life on AWSMasahito Zembutsu
 
HyClops for Zabbix紹介資料
HyClops for Zabbix紹介資料HyClops for Zabbix紹介資料
HyClops for Zabbix紹介資料Daisuke Ikeda
 
Jtfハンズオン資料(公開版)
Jtfハンズオン資料(公開版)Jtfハンズオン資料(公開版)
Jtfハンズオン資料(公開版)亮介 山口
 
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」Kazuyuki Sato
 
20140726 jaws-ug chiba AWS operation best practice
20140726 jaws-ug chiba AWS operation best practice20140726 jaws-ug chiba AWS operation best practice
20140726 jaws-ug chiba AWS operation best practiceKazuki Ueki
 
AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~
AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~
AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~Daisuke Ikeda
 
20140717 awssummit2014-cloud-operation
20140717 awssummit2014-cloud-operation20140717 awssummit2014-cloud-operation
20140717 awssummit2014-cloud-operationYasuhiro Araki, Ph.D
 
SendGridサンプルの紹介
SendGridサンプルの紹介SendGridサンプルの紹介
SendGridサンプルの紹介Shunji Konishi
 
コンテナ基盤であるLXC/LXDを 本番環境で運用する話
コンテナ基盤であるLXC/LXDを 本番環境で運用する話コンテナ基盤であるLXC/LXDを 本番環境で運用する話
コンテナ基盤であるLXC/LXDを 本番環境で運用する話Nobuhiro Fujita
 
CoreOSによるDockerコンテナのクラスタリング
CoreOSによるDockerコンテナのクラスタリングCoreOSによるDockerコンテナのクラスタリング
CoreOSによるDockerコンテナのクラスタリングYuji ODA
 
オンプレミスから AWS への劇的ビフォーアフター
オンプレミスから AWS への劇的ビフォーアフターオンプレミスから AWS への劇的ビフォーアフター
オンプレミスから AWS への劇的ビフォーアフターmanabusakai
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
DockerクイックツアーEtsuji Nakai
 
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?ご注文は監視自動化ですか?
ご注文は監視自動化ですか?Masahito Zembutsu
 

Andere mochten auch (15)

2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
 
No Monitoring, No Life on AWS
No Monitoring, No Life on AWSNo Monitoring, No Life on AWS
No Monitoring, No Life on AWS
 
HyClops for Zabbix紹介資料
HyClops for Zabbix紹介資料HyClops for Zabbix紹介資料
HyClops for Zabbix紹介資料
 
Jtfハンズオン資料(公開版)
Jtfハンズオン資料(公開版)Jtfハンズオン資料(公開版)
Jtfハンズオン資料(公開版)
 
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
 
20140726 jaws-ug chiba AWS operation best practice
20140726 jaws-ug chiba AWS operation best practice20140726 jaws-ug chiba AWS operation best practice
20140726 jaws-ug chiba AWS operation best practice
 
AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~
AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~
AWSを含めたハイブリッド環境の監視の実現 ~zabbixのクラウド対応モジュールHyClops~
 
20140717 awssummit2014-cloud-operation
20140717 awssummit2014-cloud-operation20140717 awssummit2014-cloud-operation
20140717 awssummit2014-cloud-operation
 
SendGridサンプルの紹介
SendGridサンプルの紹介SendGridサンプルの紹介
SendGridサンプルの紹介
 
コンテナ基盤であるLXC/LXDを 本番環境で運用する話
コンテナ基盤であるLXC/LXDを 本番環境で運用する話コンテナ基盤であるLXC/LXDを 本番環境で運用する話
コンテナ基盤であるLXC/LXDを 本番環境で運用する話
 
CoreOSによるDockerコンテナのクラスタリング
CoreOSによるDockerコンテナのクラスタリングCoreOSによるDockerコンテナのクラスタリング
CoreOSによるDockerコンテナのクラスタリング
 
オンプレミスから AWS への劇的ビフォーアフター
オンプレミスから AWS への劇的ビフォーアフターオンプレミスから AWS への劇的ビフォーアフター
オンプレミスから AWS への劇的ビフォーアフター
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?ご注文は監視自動化ですか?
ご注文は監視自動化ですか?
 

Ähnlich wie VagrantユーザのためのDocker入門

Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]Masashi Shinbara
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境Masashi Shinbara
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
DockerハンズオンKazuyuki Mori
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例maebashi
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようTakashi Makino
 
Docker handson
Docker handsonDocker handson
Docker handsonkoda3
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Yuichi Ito
 
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方ゆるふわなDockerの使い方
ゆるふわなDockerの使い方Kento Aoyama
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念Masahito Zembutsu
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門hiro nemu
 
コンテナの基本 ~Docker実践~
コンテナの基本 ~Docker実践~コンテナの基本 ~Docker実践~
コンテナの基本 ~Docker実践~Ryosuke Uchiyama
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使うMasashi Shinbara
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 
Windows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみたWindows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみたTakashi Kanai
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Naoki Nagazumi
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会samemoon
 

Ähnlich wie VagrantユーザのためのDocker入門 (20)

Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
Docker handson
Docker handsonDocker handson
Docker handson
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
 
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方ゆるふわなDockerの使い方
ゆるふわなDockerの使い方
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
コンテナの基本 ~Docker実践~
コンテナの基本 ~Docker実践~コンテナの基本 ~Docker実践~
コンテナの基本 ~Docker実践~
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Windows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみたWindows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみた
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
Docker社内勉強会
Docker社内勉強会Docker社内勉強会
Docker社内勉強会
 
Dockerの導入
Dockerの導入Dockerの導入
Dockerの導入
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
 

Mehr von Masashi Shinbara

日本語消えたスライド
日本語消えたスライド日本語消えたスライド
日本語消えたスライドMasashi Shinbara
 
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Masashi Shinbara
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-Masashi Shinbara
 
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2Masashi Shinbara
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPressMasashi Shinbara
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Masashi Shinbara
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築Masashi Shinbara
 
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationHow to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationMasashi Shinbara
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーションMasashi Shinbara
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションMasashi Shinbara
 
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク LaravelMasashi Shinbara
 
開発現場で活用するVagrant
開発現場で活用するVagrant開発現場で活用するVagrant
開発現場で活用するVagrantMasashi Shinbara
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るMasashi Shinbara
 
Heroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションHeroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションMasashi Shinbara
 
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログインLaravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログインMasashi Shinbara
 
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!Masashi Shinbara
 
Vagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオンVagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオンMasashi Shinbara
 
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようTwilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようMasashi Shinbara
 

Mehr von Masashi Shinbara (20)

日本語消えたスライド
日本語消えたスライド日本語消えたスライド
日本語消えたスライド
 
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
 
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
 
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationHow to learn Laravel5 application from Authentication
How to learn Laravel5 application from Authentication
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
 
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーションAzure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
 
わかってるフレームワーク Laravel
わかってるフレームワーク Laravelわかってるフレームワーク Laravel
わかってるフレームワーク Laravel
 
開発現場で活用するVagrant
開発現場で活用するVagrant開発現場で活用するVagrant
開発現場で活用するVagrant
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
 
Heroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションHeroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーション
 
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログインLaravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
 
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!
 
Composer 再入門
Composer 再入門Composer 再入門
Composer 再入門
 
Vagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオンVagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオン
 
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようTwilio API を PHP で触ってみよう
Twilio API を PHP で触ってみよう
 
いまどきのPHP
いまどきのPHPいまどきのPHP
いまどきのPHP
 

VagrantユーザのためのDocker入門

  • 2. Agenda (c) 2014 Masashi Shinbara @shin1x1 • Dockerとは • Dockerを触ってみる • Vagrantとの比較 • ユースケースに見る • まとめ
  • 4. (c) 2014 Masashi Shinbara @shin1x1 Dockerの特徴1 コンテナ型なので 起動マジ速い!
  • 5. (c) 2014 Masashi Shinbara @shin1x1 Dockerの特徴2 レイヤードファイルシステム ディスク、ネットワーク節約
 マジeco !!
  • 6. (c) 2014 Masashi Shinbara @shin1x1 Dockerの特徴3 コンテナがどこでも動く マジポータブル!
  • 7. (c) 2014 Masashi Shinbara @shin1x1 Cool だろ?
  • 8. Dockerとは (c) 2014 Masashi Shinbara @shin1x1
  • 9. (c) 2014 Masashi Shinbara @shin1x1 Dockerとは • Docker社(旧dotCloud社)が開発したOSS • golang で実装 • コンテナ技術を使った軽量な仮想環境 • レイヤによる差分ファイルシステム • コンテナ(イメージ)配布システム
  • 10. (c) 2014 Masashi Shinbara @shin1x1 Docker について http://www.slideshare.net/dotCloud/docker-intro- november
  • 11. (c) 2014 Masashi Shinbara @shin1x1 コンテナとVM http://www.slideshare.net/dotCloud/docker-intro-november
  • 12. (c) 2014 Masashi Shinbara @shin1x1 Dockerコンテナ http://www.slideshare.net/dotCloud/docker-intro-november
  • 13. (c) 2014 Masashi Shinbara @shin1x1 Dockerシステム概要 http://www.slideshare.net/dotCloud/docker-intro-november
  • 14. (c) 2014 Masashi Shinbara @shin1x1 Dockerコンテナの更新 http://www.slideshare.net/dotCloud/docker-intro-november
  • 15. (c) 2014 Masashi Shinbara @shin1x1 レイヤファイルシステム http://docs.docker.io/en/latest/terms/image/
  • 16. (c) 2014 Masashi Shinbara @shin1x1 レイヤファイルシステム http://docs.docker.io/en/latest/terms/image/
  • 17. (c) 2014 Masashi Shinbara @shin1x1 レイヤファイルシステム http://docs.docker.io/en/latest/terms/image/
  • 18. (c) 2014 Masashi Shinbara @shin1x1 レイヤファイルシステム http://docs.docker.io/en/latest/terms/image/
  • 20. (c) 2014 Masashi Shinbara @shin1x1 OSXで試す • OSX では、Docker コマンドだけ使えるが、
 Dockerコンテナは動かない • VM 等で、Linux 環境を用意する • Linux 環境として、boot2docker が手軽 • 今回は、Vagrant で CentOS 環境を使う
  • 21. (c) 2014 Masashi Shinbara @shin1x1 なぜ boot2docker 使わない? • Vagrant なら、IP の割り当てが楽 • Vagrant なら、synced_folder が便利 • VM の起動は時間がかかるが、あとは一緒
  • 22. (c) 2014 Masashi Shinbara @shin1x1 インストール(OSX) ! $ brew install docker! • Homebrew で docker インストール
  • 23. (c) 2014 Masashi Shinbara @shin1x1 Linux環境を用意(OSX) ! $ git clone https://github.com/shin1x1/vagrant- centos-docker.git! $ cd vagrant-centos-docker! $ vagrant up! • Vagrant で Docker デーモン(CentOS)を起動
  • 24. (c) 2014 Masashi Shinbara @shin1x1 CentOSでのDocker $ sudo sed -i 's,^other_args="",other_args="-H tcp://0.0.0.0:4243 -H unix:// -dns 8.8.8.8",g' /etc/sysconfig/docker • unixドメインソケットでのみ通信可能なので、
 TCP/IP で待ち受けるように変更 • /etc/sysconfig/docker other_args="-H tcp://0.0.0.0:4243 -H unix:// -dns 8.8.8.8"
  • 25. (c) 2014 Masashi Shinbara @shin1x1 Dockerホスト設定(OSX) ! $ docker -H tcp://localhost:4243 info! • Docker コマンドに -H オプションで指定 ! $ export DOCKER_HOST=tcp://localhost:4243! $ docker info! • 環境変数で設定しておくと楽
  • 26. (c) 2014 Masashi Shinbara @shin1x1 ベースイメージ取得 $ docker search centos • イメージを探す $ docker pull centos • イメージのダウンロード $ docker images! REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE! centos 6.4 539c0211cd76 12 months ago 300.6 MB! centos latest 539c0211cd76 12 months ago 300.6 MB • キャッシュしているイメージを表示
  • 27. (c) 2014 Masashi Shinbara @shin1x1 コンテナを起動 $ docker run centos cat /etc/redhat-release! CentOS release 6.4 (Final) • コンテナを起動して、cat を実行 $ docker run -i -t centos /bin/bash ! bash-4.1# • コンテナを起動して、Bash を実行
  • 28. (c) 2014 Masashi Shinbara @shin1x1 実行コンテナを確認 $ docker ps! CONTAINER ID IMAGE COMMAND CREATED ! fa7c9e516c61 centos:6.4 /bin/bash 6 minutes ago • 実行中コンテナを表示 $ docker ps -a! CONTAINER ID IMAGE COMMAND CREATED STATUS! 8a021062464e centos:6.4 /bin/bash 7 seconds ago Up 6 seconds! 5dd90f9483d3 centos:6.4 cat /etc/redhat-rele 29 seconds ago Exit 0 • 全て(停止コンテナ含めて)表示
  • 29. (c) 2014 Masashi Shinbara @shin1x1 コンテナをイメージ化 $ docker commit CONTAINER_ID IMAGE_NAME! xxxxxxxxxxxxxxxxxxxxx! ! $ docker images! ! $ docker run IMAGE_NAME php -v! PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)! Copyright (c) 1997-2010 The PHP Group! Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies • コンテナをイメージ化
  • 30. (c) 2014 Masashi Shinbara @shin1x1 コンテナ構築を自動化 $ vim Dockerfile! FROM centos! MAINTAINER shin1x1 <shin1x1@gmail.com>! ! #! # httpd! RUN yum -y install httpd! ! #! # PHP! RUN yum -y install php! ! CMD ["/usr/sbin/apachectl", "-DFOREGROUND"]! • Dockerfile に構築手順を書く
  • 31. (c) 2014 Masashi Shinbara @shin1x1 コンテナ構築を自動化 $ docker build -t shin1x1/httpd_php .! Uploading context 150 kB! Uploading context! Step 0 : FROM centos! ---> 539c0211cd76! Step 1 : MAINTAINER shin1x1 <shin1x1@gmail.com>! ---> Using cache! ---> b84d1c89ba69! Step 2 : RUN yum -y install httpd! ---> Using cache! ---> 7abc65b054a8! Step 3 : RUN yum -y install php! ---> Using cache! ---> 792d88165f34! Step 4 : CMD ["/usr/sbin/apachectl", "-DFOREGROUND"]! ---> Using cache! ---> 04626460b476! Successfully built 04626460b476 • イメージをビルド
  • 32. (c) 2014 Masashi Shinbara @shin1x1 コンテナ構築を自動化 $ docker run shin1x1/httpd_php php -v! PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)! Copyright (c) 1997-2010 The PHP Group! Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies! • 構築したイメージをコンテナとして起動
  • 33. (c) 2014 Masashi Shinbara @shin1x1 コンテナをサービス化 $ docker run -d -p 80:80 shin1x1/httpd_php! xxxxxxxxxxxxxxxxxxxxxxxx! • -d = コンテナをバックグラウンドで動かす • -p = ポートマッピング(ホスト:コンテナ) • -v = ホストディレクトリをコンテナからマウント • コンテナのプロセスはフォアグラウンドで動かす • http://192.168.33.10/ でアクセス可能
  • 34. (c) 2014 Masashi Shinbara @shin1x1 Vagrantとの比較 ※Vagrant で VirtualBox を使う際と比較
  • 35. (c) 2014 Masashi Shinbara @shin1x1 速くなったVagrant? • いいえ、違います。 • ユースケースは似てるとこもありますが、
 異なるものと思ったほうが良いです。
  • 36. (c) 2014 Masashi Shinbara @shin1x1 似てるところ • 独立した仮想環境が容易に作れる • ベースイメージを利用 • 構築手順(Dockerfile, Vagrantfile)を
 書いて、自動構築 • どの環境でも同じ環境が作れる
  • 37. (c) 2014 Masashi Shinbara @shin1x1 違うところ • 動作方式(ハイパーバイザー型とコンテナ型) • 起動速度 • ファイルシステム
 (フルバックアップと差分バックアップ) • ポータビリティ • 想定しているユースケース
  • 38. (c) 2014 Masashi Shinbara @shin1x1 ユースケースに見る VagrantとDocker
  • 39. (c) 2014 Masashi Shinbara @shin1x1 検証環境に使う • ミドルウェアのインストールや設定の検証など • 手軽に作って、壊してができるので良い • 検証用のベース image を用意しておく • image のキャッシュを生かすため
 同じ VM 上で Docker デーモンを動かす
  • 40. (c) 2014 Masashi Shinbara @shin1x1 開発環境に使う • OSX の IDEで書いて、コードの実行はVM
 => Vagrant の synced_folder を利用 • プロジェクト毎に独立した環境にしたい
 => Vagrant の方がより独立した環境に • 全く同じ環境にしたい
 => アクセス IP も固定した方が吉 • OSXでは、どのみちVMが必要 • Vagrant 内でプロビジョナで Docker 使うならアリ
  • 41. (c) 2014 Masashi Shinbara @shin1x1 CI環境に使う • Jenkinsでオールテスト実行環境として利用 • ビルドの度にコンテナを生成して、テスト実行 • ビルド毎に独立した環境 • 軽量な動作で複数実行されても問題無い • いま、一番導入しやすいところ • Vagrant だとオーバーヘッドが大きい
  • 42. (c) 2014 Masashi Shinbara @shin1x1 CI運用例 Mac private repo (1) git push CI サーバ(さくらVPS) (2) hook (3) git pull (4) docker build & docker run
  • 43. (c) 2014 Masashi Shinbara @shin1x1 CI運用例 • Jenkinsプロジェクト設定(シェルの実行) sudo docker build -t ${JOB_NAME} .! sudo docker run -v ${WORKSPACE}/src:/share ${JOB_NAME}
  • 44. (c) 2014 Masashi Shinbara @shin1x1 本番環境に使う • Docker の主戦場 • PaaS / DaaS (Docker as a Service) • サーバでコンテナビルド? • ビルドしたコンテナをpush? • まだ模索中…
  • 45. (c) 2014 Masashi Shinbara @shin1x1 まとめ
  • 46. (c) 2014 Masashi Shinbara @shin1x1 まとめ • 軽量でポータブルなコンテナ • OSXで使うなら、VM が必要 • Docker ≠ better Vagrant
  • 47. @shin1x1 (c) 2014 Masashi Shinbara @shin1x1
  • 48. PHPカンファレンス関西2014 (c) 2014 Masashi Shinbara @shin1x1 http://conference.kphpug.jp/2014/ • 2014/06/28(土) • 大阪産業創造館 • セッション募集中!!