![](/img/trans.png)
[英]Provision Vagrant Linux VM with another Vagrant Linux VM running Ansible
[英]Vagrant and Docker provider: a way to force proxy VM for Linux hosts?
TL&DR: 即使主機操作系統本身支持Docker,是否有一種方法可以強制Vagrant使用代理VM?
我正在將Vagrant與Docker提供程序一起使用。 Vagrant VM是OS,而Docker容器托管了我的應用程序(Web服務器,DB)。
問題:
Linux容器不能在非Linux機器上本地運行。 如果您的開發人員是在Mac或Windows上,則他們不能本地運行Docker容器。 Vagrant檢測到這些情況,並自動啟動Linux虛擬機以運行Docker容器。
[...]
如果Vagrant與Linux上的Docker一起使用,則Vagrant不會自動啟動虛擬機 ,而是將在本地運行Docker
資料來源: http : //www.vagrantup.com/blog/feature-preview-vagrant-1-6-docker-dev-environments.html
Vagrant自動為不支持Docker的OS啟動一個代理虛擬機非常好,因為它們具有相同的OS。 但是對於Linux主機,我們受困於本機Docker安裝,這不會引起什么問題:
這是我的Vagrant文件供參考:
DockerHost.Vagrantfile
Vagrant.configure("2") do |config|
config.vm.provision "docker"
config.vm.box = "ubuntu/trusty64"
config.vm.define "dockerhost"
config.vm.network :forwarded_port, guest: 80, host: 8080
config.vm.synced_folder "/sites", "/sites" [...]
config.vm.provider :virtualbox do |vb|
vb.name = "Vagrant-Dockerhost"
vb.memory = 1024 # => Required by MySQL Server
end
end
Vagrantfile
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'docker'
DOCKER_HOST_NAME = "dockerhost"
DOCKER_HOST_VAGRANTFILE = "DockerHost.Vagrantfile"
Vagrant.configure("2") do |config|
config.vm.define "mysql-server" do |v|
v.vm.provider "docker" do |d|
d.image = "mysql"
d.name = "mysql-server"
d.env = {
MYSQL_ROOT_PASSWORD: "rootpasswd",
MYSQL_USER: "mysqluser",
MYSQL_PASSWORD: "userpasswd",
MYSQL_DATABASE: "dev"
}
d.volumes = ["/mysql:/var/lib/mysql"]
d.cmd = ["/entrypoint.sh", "mysqld"]
d.remains_running = true
d.vagrant_machine = "#{DOCKER_HOST_NAME}"
d.vagrant_vagrantfile = "#{DOCKER_HOST_VAGRANTFILE}"
end
end
config.vm.define "apache-server" do |v|
v.vm.provider "docker" do |d|
d.image = "lacavalerie/apache-server"
d.ports = ["80:80"]
d.name = "apache-server"
d.link("mysql-server:db")
d.volumes = [...]
d.cmd = ["/scripts/setup.rb"]
d.remains_running = true
d.vagrant_machine = "#{DOCKER_HOST_NAME}"
d.vagrant_vagrantfile = "#{DOCKER_HOST_VAGRANTFILE}"
end
end
end
只需使用d.force_host_vm = true
選項
從Vagrant docs:
force_host_vm(布爾值) -如果為true,則即使運行Vagrant的計算機支持Linux容器,也會啟動主機VM。 這對於強制使用一致的環境來運行Docker非常有用。 在Mac和Windows主機上,此值默認為“ true”,在Linux主機上,默認值為“ false”。 選擇使用其他Docker提供程序或選擇加入本機Docker構建的Mac / Windows用戶可以將此值顯式設置為false以禁用該行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.