用 Docker 最大的好處就是啟動速度,比 VirtualBox 快非常多,但 Vagrant 官方對於 Docker provider 的範例還是太少,踹了老半天才踹出來:
ENV["VAGRANT_DEFAULT_PROVIDER"] = "docker" VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.provider "docker" do |docker, override| docker.image = "fgrehm/vagrant-ubuntu:precise" docker.has_ssh = true override.ssh.port = 22 end end
然後用 vagrant up
跑起來,接下來就可以用 vagrant ssh
連進去。
其中 override
是目前的 workaround,可以參考 GitHub 上的「Docker provider: cannot 'vagrant ssh' when not using a Docker host VM · Issue #3799 · mitchellh/vagrant」。
Docker 的 image 不透過 Vagrant 管理,而是 Docker 自己處理。可以用 docker images
(列出) 與 docker rmi [repository]
(刪除) 操作。
您可以参考一下我写的Vagrant+Docker provider的实战例子:http://betacz.com/2014/05/20/vagrant-met-docker/
那个ssh port的“workaround"正是本人提供的。