DC4

Vagrant + Docker入門

やりたい事

  • VagrantVirtualBox → docker で起動。
  • 既に作成済のWebアプリケーションを動作させたい。

Vagrantのセットアップ

参考サイト


Vagrantのメモ

  • Provider
  • Box
    • 仮想環境のベースとなるファイル、ubuntとかcentosとか。
  • Vagrantfile
    • 構築するVirtualBoxのスペック、使用するプロビジョニングツールの指定など。
  • Provision

参考サイト - Vagrant日本語ドキュメント - Vagrantの基本


VagrantのDocker provisioner

今まではGithubのdockerリポジトリにVagrantfileが存在し、 サンプルではそれを使用する事が多かったが、Docker provisionerVagrant1.4より導入され、そちらを使用する流れになったらしい
- ざっくり分かる Vagrant 1.4 / Docker Provisioner

Vagrantfileに以下の記載を追加後、 vagrant upをするとdockerubuntuイメージが入った状態で構築される。

  config.vm.box = "precise64"
  config.vm.provision :docker do |d|
    d.pull_images "ubuntu"
  end  

Hello docker

vagrant@precise64:~$ docker run ubuntu /bin/echo Hello,docker
Hello,docker

コンテナのイメージ保存

vagrant@precise64:~$ docker run -i -t ubuntu /bin/bash
root@6741f819921b:/# apt-get update
root@6741f819921b:/# apt-get install -y memcached
root@6741f819921b:/# exit
exit
vagrant@precise64:~$ docker commit `コンテナID` yasu/memcached
vagrant@precise64:~$ docker images yasu/memcached
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
yasu/memcached      latest              cba457033634        53 seconds ago      261.3 MB

イメージからのコンテナ起動

# コンテナの11211ポートを公開
vagrant@precise64:~$ docker run -p 11211 -i yasu/memcached /usr/bin/memcached -u memcache -vv

Dockerfileの書き方

/home/vagrant/Dockerfiles/Dockerfile

FROM ubuntu

RUN apt-get update
RUN apt-get install -y git
RUN apt-get clean

DockerfileのBuild

docker build -t yasu/git_for_dockerfile /home/vagrant/Dockerfiles/

Dockerfileではなく、Dockerfileが存在するディレクトリを指定する事

vagrant@precise64:~$ docker run -i -t yasu/git_for_dockerfile /bin/bash
root@4015bceae1c4:/# git --version
git version 1.7.9.5

所感

  • Vagrant / VirtualBox を使用した事が無かったため、そちらを先に入門すべき。
  • 今回の目的ではVagrant + VirtualBoxで達成できるっぽい。
  • イメージのDLに時間が掛かるので作業中はやめたほうがいいかも。