如何使用docker provider在vagrant上运行provision.sh

时间:2014-11-09 18:33:16

标签: vagrant docker

我现在在很多云上成功使用了vagrant。

我决定尝试使用docker,但我可能会遗漏一些非常基本的东西,因为我失败了很多。

我写了这个流浪文件:

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

这个配置适用于其他云(如果我当然添加特定的云细节)。

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

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

我已验证ubuntu图片在泊坞广告中工作正常。码头似乎工作正常。

当我运行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打印出来。

我发现了很多关于这个错误的Q& A,但我无法用来解决我的问题。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

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

我发现的解决方案很简单。使用这个惊人的贡献:

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

这里需要注意的重要事项是Dockerfile - 它定义了容器中的SSH连接。没有SSH,它根本行不通。

然而 - 人们失踪的另一个默认事实 - docker使用需要权限的套接字,但runnign sudo vagrant up --provider无法解决问题。为了顺利运行,您应首先sudo su -或将您的用户添加到docker组。

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

总结一下:

  • 克隆git存储库
  • sudo su -
  • vagrant up --provider docker

==>机器正常运行..

答案 1 :(得分:1)

https://github.com/mitchellh/vagrant/issues/3951有一段时间经历过同样的事情。看起来这是由即将到来的Vagrant的次要版本修复。

答案 2 :(得分:1)

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

end

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

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