如何在docker提供者上运行vagrant上的provision.sh

现在我已经在很多云上成功地使用了stream浪汉了。

我决定尝试与docker工人,但我可能错过了一些非常基本的东西,因为我失败了。

我写了这个stream浪文件:

Vagrant.configure("2") do |config| config.vm.synced_folder "../synced_folder", "/vagrant" config.vm.provision "shell" do |s| s.path = "provision.sh" s.privileged = false end config.vm.provider :docker do |docker, override| docker.image = 'ubuntu' end end 

这个configuration对我来说也适用于其他云(如果我添加了特定的云细节)。

我的provision.sh文件只是echo "hello world"

我的synced_folder有一个虚拟文件..

我已经validation, ubuntu图像在docker工作正常。 docker似乎工作正常。

当我跑到vagrant up --provider docker我得到以下

 The container started either never left the "stopped" state or very quickly reverted to the "stopped" state. This is usually because the container didn't execute a command that kept it running, and usually indicates a misconfiguration. If you meant for this container to not remain running, please set the Docker provider configuration "remains_running" to "false": config.vm.provider "docker" do |d| d.remains_running = false end 

我没有看到打印出hello world

我发现了很多有关这个错误的问答,但没有什么我可以用来解决我的问题。

我究竟做错了什么?

所以我错过了一些非常基本的东西。

我find的解决scheme很简单。 使用这个惊人的贡献来自:

https://github.com/bubenkoff/vagrant-docker-example

这里需要注意的是Dockerfile – 它定义容器中的SSH连接。 没有SSH,它根本无法工作。

然而 – 人们缺less的另一个默认的事实 – docker使用一个需要权限的套接字,然而运行sudo vagrant up --provider不能解决问题。 为了运行没有问题,你应该sudo su -首先或添加您的用户到docker组。

详细了解: https : //askubuntu.com/questions/477551/how-can-i-use-docker-without-sudo

所以总结一下:

  • 克隆git仓库
  • sudo su –
  • stream浪汉 – 供应docker工人

==>机器运转良好..

经历了一段时间,并遵循https://github.com/mitchellh/vagrant/issues/3951 。 看起来这是要通过即将到来的stream浪小版本来解决。

 config.vm.provider :docker do |docker, override| docker.image = 'ubuntu' end 

在这里你缺less一个命令,你需要一个命令来运行容器。 像这样的东西:

 config.vm.provider :docker do |docker, override| docker.image = 'ubuntu' docker.run = 'ubuntu' end 

或者你可以做这样的事情:

 config.vm.provider :docker do |docker, override| docker.image = 'ubuntu' docker.cmd = ["/usr/sbin/sshd", "-D"] end