Vagrant docker provisioner不会在启动时启动容器

时间:2015-07-25 07:07:01

标签: docker vagrant vagrant-provision

我使用Docker配置器来进行Vagrant。他们在docs中说:

  

除了提取图像,Docker配置器还可以运行和   为你启动容器。这使您可以自动启动服务   作为流浪者的一部分。

这是我的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   

1 个答案:

答案 0 :(得分:1)

好吧,我没有找到Vagrant在启动时没有启动容器的原因,但解决方法是使用Docker的restart policies。所以,我更新了我的Vagrantfile,删除了所有容器,并使用新的重启策略@Configuration public class OAuth2Statefull { @Bean @Primary public Boolean oauth2StatelessSecurityContext() { return Boolean.FALSE; } } 再次运行容器:

vagrant provision
  

- restart = always

     

无论退出状态如何,始终重启容器。当你   指定始终,Docker守护程序将尝试重新启动容器   下去。

现在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 然后启动vagrant halt个容器。