Vagrant docker provisioner 不会在启动时启动容器
Vagrant docker provisioner doesn't start containers on boot
我为 Vagrant 使用 Docker provisioner。他们在 docs 中说:
In addition to pulling images, the Docker provisioner can run and
start containers for you. This lets you automatically start services
as part of vagrant up.
这是我的 Vagrantfile 的一部分:
config.vm.provision "docker" do |d|
d.run "jwilder/nginx-proxy",
args: "-v /var/run/docker.sock:/tmp/docker.sock:ro -v /vagrant/certs:/etc/nginx/certs -p 80:80 -p 443:443"
d.run "redis",
args: "-v /vagrant/data:/data"
...
end
但是在 vagrant halt
和 vagrant up
之后,我的容器停止了。
$vagrant@vagrant-ubuntu-trusty-64:~$ docker ps -a
CONTAINER ID .. STATUS .. NAMES
6bb965d1a7b9 Exited (137) 2 days ago redis
7f45214f6f06 Exited (2) 2 days ago jwilder-nginx-proxy
嗯,我没找到 Vagrant 不启动容器的原因,但解决方法是使用 Docker 的 restart policies。因此,我更新了我的 Vagrantfile,删除了所有容器,并使用新的重启策略再次对 vagrant provision
到 运行 个容器进行了处理:
config.vm.provision "docker" do |d|
d.run "jwilder/nginx-proxy",
args: "--restart=always -v /var/run/docker.sock:/tmp/docker.sock:ro -v /vagrant/certs:/etc/nginx/certs -p 80:80 -p 443:443"
d.run "redis",
args: "--restart=always -v /vagrant/data:/data"
...
end
--restart=always
Always restart the container regardless of the exit status. When you
specify always, the Docker daemon will try to restart the container
indefinitely.
现在 vagrant halt
然后 vagrant up
容器启动。
我为 Vagrant 使用 Docker provisioner。他们在 docs 中说:
In addition to pulling images, the Docker provisioner can run and start containers for you. This lets you automatically start services as part of vagrant up.
这是我的 Vagrantfile 的一部分:
config.vm.provision "docker" do |d|
d.run "jwilder/nginx-proxy",
args: "-v /var/run/docker.sock:/tmp/docker.sock:ro -v /vagrant/certs:/etc/nginx/certs -p 80:80 -p 443:443"
d.run "redis",
args: "-v /vagrant/data:/data"
...
end
但是在 vagrant halt
和 vagrant up
之后,我的容器停止了。
$vagrant@vagrant-ubuntu-trusty-64:~$ docker ps -a
CONTAINER ID .. STATUS .. NAMES
6bb965d1a7b9 Exited (137) 2 days ago redis
7f45214f6f06 Exited (2) 2 days ago jwilder-nginx-proxy
嗯,我没找到 Vagrant 不启动容器的原因,但解决方法是使用 Docker 的 restart policies。因此,我更新了我的 Vagrantfile,删除了所有容器,并使用新的重启策略再次对 vagrant provision
到 运行 个容器进行了处理:
config.vm.provision "docker" do |d|
d.run "jwilder/nginx-proxy",
args: "--restart=always -v /var/run/docker.sock:/tmp/docker.sock:ro -v /vagrant/certs:/etc/nginx/certs -p 80:80 -p 443:443"
d.run "redis",
args: "--restart=always -v /vagrant/data:/data"
...
end
--restart=always
Always restart the container regardless of the exit status. When you specify always, the Docker daemon will try to restart the container indefinitely.
现在 vagrant halt
然后 vagrant up
容器启动。