如何在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