2

Vagrant には Docker プロビジョナーを使用します。彼らはドキュメントで言います:

イメージのプルに加えて、Docker プロビジョナーはコンテナーを実行して開始することができます。これにより、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   
4

1 に答える 1

1

さて、Vagrant が起動時にコンテナーを起動しない理由はわかりませんでしたが、回避策は Docker の再起動ポリシーを使用することです。そこで、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 を指定すると、Docker デーモンは無期限にコンテナーの再起動を試みます。

その後vagrant haltvagrant upコンテナが開始されます。

于 2015-07-26T20:46:01.767 に答える