Vagrant + Docker入門
やりたい事
- Vagrant → VirtualBox → docker で起動。
- 既に作成済のWebアプリケーションを動作させたい。
Vagrantのセットアップ
参考サイト
Vagrantのメモ
- Provider
- VMware FusionやAWSなどなどの 様々なバックエンドプロバイダ
- Box
- 仮想環境のベースとなるファイル、ubuntとかcentosとか。
- Vagrantfile
- 構築するVirtualBoxのスペック、使用するプロビジョニングツールの指定など。
- Provision
- ミドルウェアの設定やインストールを行うツール、shellなど。
参考サイト - Vagrant日本語ドキュメント - Vagrantの基本
VagrantのDocker provisioner
今まではGithubのdockerリポジトリにVagrantfileが存在し、
サンプルではそれを使用する事が多かったが、Docker provisioner
がVagrant1.4
より導入され、そちらを使用する流れになったらしい
- ざっくり分かる Vagrant 1.4 / Docker Provisioner
Vagrantfileに以下の記載を追加後、
vagrant up
をするとdocker
にubuntu
イメージが入った状態で構築される。
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に時間が掛かるので作業中はやめたほうがいいかも。