LoginSignup
111
165

More than 5 years have passed since last update.

VirtualBox+Vagrantで楽々Docker環境構築(Windows)

Last updated at Posted at 2016-08-31

はじめに

なぜVirtualBox+Vagrantで環境構築するのか

Windows上でDockerを構築する際、Docker Toolboxを一般的に使用します。そこで、ざっくり私的感覚で比較してみました。

Docker Toolbox VirtualBox+Vagrant
長所 インストール・初期設定が楽 プロキシ設定が容易、設定を共有(再配布)できる
短所 プロキシ設定がしづらい インストールが面倒

■ Docker Toolbox

  • 中身はVirtualBoxで起動している。
  • インストーラでVirtualBoxやDockerをまとめてインストールしてくれてポチポチ設定すればいいのでインストールが楽でよい。
  • VagrantのようにゲストOSに共通する設定ファイル(Vagrantfile)がなく、また細かい設定がしづらい(例えばプロキシ設定等)。

※Docker Toolboxでのプロキシ設定について
https://github.com/docker/toolbox/issues/102
http://qiita.com/heppoko_dev/items/d7aa33336998dc742ac0
http://qiita.com/ll_kuma_ll/items/09dd29377cc0a3d61d99

■ VirtualBox+Vagrant

  • VirtualBox、Vagrantを個別にインストールしなければならないのでインストールが面倒。またDockerも別途準備しなければならない。ただDockerインストールに関してはVagrantfileに初期インストール設定を追記、再利用等すればインストールの効率化はできる。
  • Docker Toolboxと比較してブラックボックスが少ないところとVituralBoxゲストOSの設定が一元管理・細かい設定が簡単にできるところがよい。
  • VirtualBox+VagrantはDocker用途以外の環境構築でも使用できるのがよい。

結論

VagrantfileにDockerインストール設定や各種設定(プロキシ等)を用意しておけば、VitualBox、Vagrantのインストールのみで環境が構築できるし、他者のマシンでも同環境を構築しやすいといった利点が大きいため個人的にVirtualBox+Vagrantで構築する方をお勧めします。

構築手順

ではさっそく、VirtualBox+Vagrantで構築していきます。
ここでは、事前にDockerのインストールをはじめ、いくつかの設定が用意されているVagrantfileを使用して構築していきます。以降に書かれている内容は私のGitHubリポジトリのReadmeに少し説明を加えた内容を記載しております。

1. VirtualBoxのインストール

VitualBoxを既にインストールしている場合は読み飛ばしてください。
VitualBox本家サイトからWindows版をダウンロードしインストールします。

2. Vagrantのインストール

Vagrantを既にインストールしている場合は読み飛ばしてください。
Vagrant本家サイトからWindows版をダウンロードしインストールします。

3. Vagrantのプロキシの設定

プロキシを介してVagrantを使う場合はシステム環境変数に下記を追加します。
OSの環境変数に下記のように設定してください。

変数名
HTTP_PROXY http://<プロキシサーバ名>:<ポート番号>
HTTPS_PROXY http://<プロキシサーバ名>:<ポート番号>

【例】ホスト:proxy.mytest.co.jp、ポート:8080の場合
proxy_env.png

4. Vagrantのプラグインをインストール

4-1. vagrant-vbguestをインストール

仮想マシンのカーネルを新しくする度に Guest Additions を手動で再インストールする必要がありますが、vagrant-vbguestプラグインをインストールすることでその煩わしさを取り払ってくれます。便利プラグインなのでインストールすることをお勧めします。

下記コマンドを実行します。

コマンドプロンプト
vagrant plugin install vagrant-vbguest

※詳細について知りたい方はこちらを参照
http://blog.amedama.jp/entry/2015/08/19/204044
https://github.com/dotless-de/vagrant-vbguest

4-2. vagrant-proxyconfをインストール

プロキシを介している場合はインストールしてださい。
このvagrant-proxyconfプラグインを利用すると、ゲストOSの以下の機能に対して Proxy の設定を自動的に行ってくれます。

  • 多くのプログラムがサポートしているhttp_proxyなどの環境変数
  • Chef provisioners
  • Apt
  • Docker
  • Git
  • npm
  • PEAR
  • Yum
  • Subversion

下記コマンドを実行します。

コマンドプロンプト
vagrant plugin install vagrant-proxyconf

※詳細について知りたい方はこちらを参照
http://weblabo.oscasierra.net/vagrant-proxyconf/
https://github.com/tmatilai/vagrant-proxyconf

5. Vagrantfileの取得

事前に私の方でVagranfileを作成しており、GitHubリポジトリに格納しています。
データを格納したいフォルダで下記コマンドを実行してVagrantfileを取得してください。

コマンドプロンプト
cd <適当なフォルダ>
git clone https://github.com/sesela/vagrant-ubuntu-for-docker.git

※下記サイトからzipでダウンロードし、Vagrantfileのみを配置してもOKです。
https://github.com/sesela/vagrant-ubuntu-for-docker

6. Vagrantfileの修正

6-1. proxyとvbguestの設定

  • プロキシを介している場合、上記のようにプロキシ情報を設定してください。
  • プロキシを介していない場合、プロキシのプラグインをインストールしていなければ修正の必要ないです。プラグインをインストールしている場合は「config.proxy.enabled = false」にしてください。
  • vbguestを上記のように設定してください。
Vagrantfile
  ...
Vagrant.configure("2") do |config|

  if Vagrant.has_plugin?("vagrant-proxyconf")
    config.proxy.enabled  = true  # => true; all applications enabled, false; all applications disabled
    config.proxy.http     = "http://<プロキシホスト名>:<プロキシポート>"
    config.proxy.https    = "http://<プロキシホスト名>:<プロキシポート>"
    config.proxy.no_proxy = "localhost,127.0.0.1"
  end

  if Vagrant.has_plugin?("vagrant-vbguest")
    # set auto_update to false, if you do NOT want to check the correct
    config.vbguest.auto_update = true
  end

  # The most common configuration options are documented and commented below.
  ...

6-2. その他設定

特に設定する必要はありませんが、
ポートフォワードを設定したい、IPアドレスを変更したい場合は想定する環境に合わせて設定してください。
また、Windowsで起動することを想定しているためEncoding.default_external = 'SJIS'と設定しています。エンコードでエラーが発生する場合はコメントアウトなり対応するエンコードに設定してください。

7. ゲストOS起動

Vagrantfileの配置されているフォルダで下記コマンドを実行します。

コマンドプロンプト
vagrant up

※初回起動時はprovisionが起動されdocker,docker-compose等がインストールされます。

8. ゲストOSへログイン

ターミナル(TeraTerm、PuTTY等)を使ってVagrantfileで設定したIP(デフォルト: 192.168.33.10)へSSHでログインできます。
※ ID / PW : vagrant / vagrant

ゲストOSログイン後、下記コマンドでゲストOS上のDockerが起動されていることを確認できます。

sudo service docker status
docker-compose -version

9. ゲストOS停止

Vagrantfileの配置されているフォルダで下記コマンドを実行します。

コマンドプロンプト
vagrant halt

参照

VirtualBox+VagrantでUbuntu環境構築
VirtualBox+VagrantでCentOS7環境構築

以上。

111
165
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
111
165