Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Vagrant & Dockerによる

イマドキの開発環境構築
Japan System Laboratory 

GEEKLAB.NAGANO
Yuichi Nakazawa
本日の話題
• イマドキの開発環境事情
• Vagrant/Dockerとは
• 両者の使いわけ
• おまけ(構成管理ツールについて)
本日のゴール
Vagrant&Dockerに

興味を持って頂くこと
https://goo.gl/Nvc6yw
デモ用URL
イマドキの開発環境事情
皆さん、ご経験ないですか??
開発サーバーでは問題無いの
に本番サーバーで動かない
Aさんの環境と自分の環境

で挙動が違う
・バージョン違い
・環境の違い

 設定ファイル

 環境パス

 ディレクトリ構成等
原因
サーバー移行に伴う

度重なるセットアップ
同じサーバー構成を作りたい
けど、時間がない。

というか、面倒くさい!!
Infracture as code
そんな時に使うのが

Vagrant であり Dockerです
Vagrant&Dockerを
ざっくり言うと
コマンド一発でホストマシンに依存せず
に、開発環境やテスト環境を構築できる
ツール
Vagrant&Dockerを
ざっくり言うと2
カスタマイズしたLAMP環境を好きな時に

コマンド一発で起動できる
登場した背景
•多様化する開発スタイル
•オンプレからクラウド

Vagrant
•公式HP:https://www.vagrantup.com
•仮想環境構築ツール 2012年 V1.0 2017年2月 現在:V1.9.1
•MITライセンス(= タダ)
•指定したプロバイダ(デフォルトは、VirtualBox(Oracl...
$ vagrant up
起動はコマンド一発
Vagrantの構成
ホストOS型
ハードウェア
ホストOS
仮想化ソフト(VirtualBox等)
ゲストOS
仮想環境
ゲストOS
•ホストPC(OS)上に仮想化ソフトをインストールし、
そのソフト上でゲストOSを動作させる
•比較的導入が容易
•H/WへのアクセスはホストOSを経由 = オーバーヘッド
になりやすい(後述するコンテナ型と比較した場合)

ホストOS型の特徴
•ホストOS型の仮想環境をいくつも簡単

に起動できる
•何度でも壊せる = 色々試せる

•複数の開発者間で同様の環境を共有できる
Vagrantの特徴
•VirtualBox
•VMWare(Fusion)
•Hyper-V
•Docker
•Amazon EC2
プロバイダはアドオンで

変更可能
1. $ vagrant box add [box名]
BOXの登録
2. $ vagrant init 

環境立ち上げたい場所で
3. $ vagrant up 

環境立ち上げ
Vagrant環境構築手順
Vagrant その他のコマンド例
$ vagrant halt 

・・ 停止
$ vagrant reload 

・・ 再起動
$ vagrant ssh
・・ SSH接続
Vagrant その他のコマンド例
$ vagrant destroy 

・・ VMイメージを消す
$ vagrant box remove [box名] 

・・ BOXを消す
・ruby形式のフォーマット
・以下のような設定ができます。
ネットワーク設定

共有フォルダの設定、
プロビジョニングの設定
etc・・
Vagrantfile
Vagrantfileイメージ
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "centos67"
config.vm....
Vagrant メリット
• VagrantFileを共有することにより

エンジニア間で環境を共有できる。
•とはいえ、個々でカスタマイズは可。

(Vim派/Emacs派、bash/zsh、各種環境設定等)
→ VMツールで立ち上げることは...
Vagrant デメリット
• VMイメージが貯まる

→ ストレージを圧迫する

(使い捨てることで解決可)
• 起動が遅い(個人的感想)

→ VMで立ち上げることは変わらないので
•公式HP:https://www.docker.com
•Apache License2.0(= タダ)
•コンテナ型の仮想環境構築

(Javaのコンテナとは別もの)
•初期は、Linux上での構築しか出来なかった。

Docker
$ docker run
起動はコマンド一発
コンテナ型(Docker)
ハードウェア
ホストOS(Linux)
Dockerエンジン
ゲストOS
コンテナ
ゲストOS
コンテナ
•ホストOSの1プロセスとして起動する 

→ オーバーヘッドが少ない
•OS(カーネル)をホストOSと共有するため、
VMごとにOSインストールをする必要はない

→ 起動/動作が早い
コンテナ型の特徴
•Dockerサーバー

・・コンテナ実行
•Dockerクライント

・・Dockerコマンド

Dockerエンジンの構成
•開発向け
•運用向け

 ①効率的なデプロイ

 ②マイクロサービス
Dockerの用途
•軽量
•携帯性
•揮発性

(基本的にはLinuxカーネルに構築)
Dockerの特徴
•カーネル共有によりコンテナサイズを

抑えられる
•デバイスI/Oのエミュレートが

不要のため高速化が可能

→オーバーヘッドが少ない
•提供されるDockerイメージも必要最低限
•原則的に1コンテナ1プロセス
Dockerの特徴 - 軽量
•Dockerイメージをそのまま
他のホストOSへ
•Dockerfile元に他のホスト
OSで新規に立ち上げ
Dockerの特徴 - 携帯性
•コミットしない限り、

作業内容は保持されない・・
Dockerの特徴 - 揮発性
Docker導入方法
•Docker(各OSの仮想環境)
•Kitematic(GUI。VirtualBox)
•Docker Tools

(Linux以外に構築する場合)
•読み方:カイトマティック

•VirtualBox上に自動でCore Linuxを

インストールしその環境でコンテナを起動

する(VirtualBoxが無くてこちらも勝手にやってくれ
る)。
•GUI上ではコミットはできない・・。コンテナ...
Kitematic
VirtualBox
•Window(64bit) / OS X向けの

インストーラー
•VirtualBox上に構築(含まれる)
•Kitematic も含まれる
Docker Toolbox
•基本は、Docker ToolBox
•Hyper-V上に構築

(VirtualBoxとの共存できない)
•Win10 64bitでないとダメ
Docker For Windows
•基本は、Docker ToolBox
•HyperKit上に構築(OSX 10.10+)
•インストール位置がToolBox

と異なる

https://docs.docker.com/docker-for-mac/
docker-tool...
• 起動が早い
• 軽量
• オーバーヘッドが少ない
Docker メリット
• コミットを忘れるとツライ→作業
したものがご破産に
• 全部入りのイメージが少ないので、
開発環境を えるまでに、Vagrant
比べ時間が掛かる(個人的主観)
Docker デメリット
Vagrant / Docker使い分け
• 開発環境 

・・ Vagrant
• 動作検証 (新OSやサービスの検証)

・・ Docker / Vagrant
• 本番運用(Dockerイメージをデプロイ)

・・Docker
まとめ
• Vagrant / Docker似てるようで、まるで違う。

(簡易的なコマンドで制御できるのは一緒)
• Vagrant / Dockerそれぞれ一長一短なので用途によって

使いわけましょう。
• 類似ツールが多いので、選定をち...
おまけ
Infracture as code
構成管理ツール
•環境構成を決まったシナリオに従って
インストールや環境構築をしてくれる

•冪等性がある(何度流しても同じ結果
になる)。
ざっくりいうと
$ yum install nginx
$ chkconfig nginx on
$ sudo nginx start
ざっくりいうと、これが
これになります。

exp.) Ansible のplaybook
- name: install nginx
yum: name=nginx state=present
- name: set auto start nginx
command...
•Ansible
•chef
•puppet
メジャーなもの
•エージェントレス
•サーバーはPython2.6+

クライアントは、Python2.5
•設定ファイルがシンプル

(主なファイルは2つ程度)
Ansible
•同じ環境を何度も立てたい場合に

使えます。(開発、ステージング、本番)
•設定ファイルに変数を指定できる。
•Vagrant/Dockerにも設定ファイルは

ありますが、ツールに依存してしまう。
まとめ
さいごに
•インフラエンジニアでなくても手軽にインフラ構築

ができます。 

→ インフラエンジニア不要説

→ 明日は我が身かも・・・
•自動構成や構成管理ツールで楽出来る?? 

→ 基本が大事(銀の弾丸ではない)
Upcoming SlideShare
Loading in …5
×

Vagrant & Dockerによるイマドキの開発環境構築

12,912 views

Published on

VagrantとDockerを使用した初心者向け開発環境構築講座のスライド

Published in: Technology
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Vagrant & Dockerによるイマドキの開発環境構築

  1. 1. Vagrant & Dockerによる
 イマドキの開発環境構築 Japan System Laboratory 
 GEEKLAB.NAGANO Yuichi Nakazawa
  2. 2. 本日の話題 • イマドキの開発環境事情 • Vagrant/Dockerとは • 両者の使いわけ • おまけ(構成管理ツールについて)
  3. 3. 本日のゴール Vagrant&Dockerに
 興味を持って頂くこと
  4. 4. https://goo.gl/Nvc6yw デモ用URL
  5. 5. イマドキの開発環境事情
  6. 6. 皆さん、ご経験ないですか??
  7. 7. 開発サーバーでは問題無いの に本番サーバーで動かない
  8. 8. Aさんの環境と自分の環境
 で挙動が違う
  9. 9. ・バージョン違い ・環境の違い
  設定ファイル
  環境パス
  ディレクトリ構成等 原因
  10. 10. サーバー移行に伴う
 度重なるセットアップ
  11. 11. 同じサーバー構成を作りたい けど、時間がない。
 というか、面倒くさい!!
  12. 12. Infracture as code
  13. 13. そんな時に使うのが
 Vagrant であり Dockerです
  14. 14. Vagrant&Dockerを ざっくり言うと コマンド一発でホストマシンに依存せず に、開発環境やテスト環境を構築できる ツール
  15. 15. Vagrant&Dockerを ざっくり言うと2 カスタマイズしたLAMP環境を好きな時に
 コマンド一発で起動できる
  16. 16. 登場した背景 •多様化する開発スタイル •オンプレからクラウド

  17. 17. Vagrant
  18. 18. •公式HP:https://www.vagrantup.com •仮想環境構築ツール 2012年 V1.0 2017年2月 現在:V1.9.1 •MITライセンス(= タダ) •指定したプロバイダ(デフォルトは、VirtualBox(Oracle))に対して
 指定したBox(OSイメージ)の環境を何度でも、どのホストOSでも 同じ環境 •ホストOS型の仮想環境構築を支援
 (Vagrantというより、プロバイダの特性)
 Vagrant
  19. 19. $ vagrant up 起動はコマンド一発
  20. 20. Vagrantの構成
  21. 21. ホストOS型 ハードウェア ホストOS 仮想化ソフト(VirtualBox等) ゲストOS 仮想環境 ゲストOS
  22. 22. •ホストPC(OS)上に仮想化ソフトをインストールし、 そのソフト上でゲストOSを動作させる •比較的導入が容易 •H/WへのアクセスはホストOSを経由 = オーバーヘッド になりやすい(後述するコンテナ型と比較した場合)
 ホストOS型の特徴
  23. 23. •ホストOS型の仮想環境をいくつも簡単
 に起動できる •何度でも壊せる = 色々試せる
 •複数の開発者間で同様の環境を共有できる Vagrantの特徴
  24. 24. •VirtualBox •VMWare(Fusion) •Hyper-V •Docker •Amazon EC2 プロバイダはアドオンで
 変更可能
  25. 25. 1. $ vagrant box add [box名] BOXの登録 2. $ vagrant init 
 環境立ち上げたい場所で 3. $ vagrant up 
 環境立ち上げ Vagrant環境構築手順
  26. 26. Vagrant その他のコマンド例 $ vagrant halt 
 ・・ 停止 $ vagrant reload 
 ・・ 再起動 $ vagrant ssh ・・ SSH接続
  27. 27. Vagrant その他のコマンド例 $ vagrant destroy 
 ・・ VMイメージを消す $ vagrant box remove [box名] 
 ・・ BOXを消す
  28. 28. ・ruby形式のフォーマット ・以下のような設定ができます。 ネットワーク設定
 共有フォルダの設定、 プロビジョニングの設定 etc・・ Vagrantfile
  29. 29. Vagrantfileイメージ # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| config.vm.box = "centos67" config.vm.network "private_network", ip: "192.168.33.10" config.vm.synced_folder "../data", "/vagrant_data" end
  30. 30. Vagrant メリット • VagrantFileを共有することにより
 エンジニア間で環境を共有できる。 •とはいえ、個々でカスタマイズは可。
 (Vim派/Emacs派、bash/zsh、各種環境設定等) → VMツールで立ち上げることは変わらないので
  31. 31. Vagrant デメリット • VMイメージが貯まる
 → ストレージを圧迫する
 (使い捨てることで解決可) • 起動が遅い(個人的感想)
 → VMで立ち上げることは変わらないので
  32. 32. •公式HP:https://www.docker.com •Apache License2.0(= タダ) •コンテナ型の仮想環境構築
 (Javaのコンテナとは別もの) •初期は、Linux上での構築しか出来なかった。
 Docker
  33. 33. $ docker run 起動はコマンド一発
  34. 34. コンテナ型(Docker) ハードウェア ホストOS(Linux) Dockerエンジン ゲストOS コンテナ ゲストOS コンテナ
  35. 35. •ホストOSの1プロセスとして起動する 
 → オーバーヘッドが少ない •OS(カーネル)をホストOSと共有するため、 VMごとにOSインストールをする必要はない
 → 起動/動作が早い コンテナ型の特徴
  36. 36. •Dockerサーバー
 ・・コンテナ実行 •Dockerクライント
 ・・Dockerコマンド
 Dockerエンジンの構成
  37. 37. •開発向け •運用向け
  ①効率的なデプロイ
  ②マイクロサービス Dockerの用途
  38. 38. •軽量 •携帯性 •揮発性
 (基本的にはLinuxカーネルに構築) Dockerの特徴
  39. 39. •カーネル共有によりコンテナサイズを
 抑えられる •デバイスI/Oのエミュレートが
 不要のため高速化が可能
 →オーバーヘッドが少ない •提供されるDockerイメージも必要最低限 •原則的に1コンテナ1プロセス Dockerの特徴 - 軽量
  40. 40. •Dockerイメージをそのまま 他のホストOSへ •Dockerfile元に他のホスト OSで新規に立ち上げ Dockerの特徴 - 携帯性
  41. 41. •コミットしない限り、
 作業内容は保持されない・・ Dockerの特徴 - 揮発性
  42. 42. Docker導入方法 •Docker(各OSの仮想環境) •Kitematic(GUI。VirtualBox) •Docker Tools
 (Linux以外に構築する場合)
  43. 43. •読み方:カイトマティック
 •VirtualBox上に自動でCore Linuxを
 インストールしその環境でコンテナを起動
 する(VirtualBoxが無くてこちらも勝手にやってくれ る)。 •GUI上ではコミットはできない・・。コンテナ生成は可 •コンテナイメージは、「Docker Hub」から取得
 Kitematic
  44. 44. Kitematic VirtualBox
  45. 45. •Window(64bit) / OS X向けの
 インストーラー •VirtualBox上に構築(含まれる) •Kitematic も含まれる Docker Toolbox
  46. 46. •基本は、Docker ToolBox •Hyper-V上に構築
 (VirtualBoxとの共存できない) •Win10 64bitでないとダメ Docker For Windows
  47. 47. •基本は、Docker ToolBox •HyperKit上に構築(OSX 10.10+) •インストール位置がToolBox
 と異なる
 https://docs.docker.com/docker-for-mac/ docker-toolbox/
 Docker For Mac
  48. 48. • 起動が早い • 軽量 • オーバーヘッドが少ない Docker メリット
  49. 49. • コミットを忘れるとツライ→作業 したものがご破産に • 全部入りのイメージが少ないので、 開発環境を えるまでに、Vagrant 比べ時間が掛かる(個人的主観) Docker デメリット
  50. 50. Vagrant / Docker使い分け • 開発環境 
 ・・ Vagrant • 動作検証 (新OSやサービスの検証)
 ・・ Docker / Vagrant • 本番運用(Dockerイメージをデプロイ)
 ・・Docker
  51. 51. まとめ • Vagrant / Docker似てるようで、まるで違う。
 (簡易的なコマンドで制御できるのは一緒) • Vagrant / Dockerそれぞれ一長一短なので用途によって
 使いわけましょう。 • 類似ツールが多いので、選定をちゃんとしないと環境 が余計混乱してしまう可能性も。
 • 確実に生産性と保守性はあがります。
  52. 52. おまけ
  53. 53. Infracture as code
  54. 54. 構成管理ツール
  55. 55. •環境構成を決まったシナリオに従って インストールや環境構築をしてくれる
 •冪等性がある(何度流しても同じ結果 になる)。 ざっくりいうと
  56. 56. $ yum install nginx $ chkconfig nginx on $ sudo nginx start ざっくりいうと、これが
  57. 57. これになります。
 exp.) Ansible のplaybook - name: install nginx yum: name=nginx state=present - name: set auto start nginx command: chkconfig nginx on - name: restart nginx command: service nginx restart
  58. 58. •Ansible •chef •puppet メジャーなもの
  59. 59. •エージェントレス •サーバーはPython2.6+
 クライアントは、Python2.5 •設定ファイルがシンプル
 (主なファイルは2つ程度) Ansible
  60. 60. •同じ環境を何度も立てたい場合に
 使えます。(開発、ステージング、本番) •設定ファイルに変数を指定できる。 •Vagrant/Dockerにも設定ファイルは
 ありますが、ツールに依存してしまう。 まとめ
  61. 61. さいごに •インフラエンジニアでなくても手軽にインフラ構築
 ができます。 
 → インフラエンジニア不要説
 → 明日は我が身かも・・・ •自動構成や構成管理ツールで楽出来る?? 
 → 基本が大事(銀の弾丸ではない)

×