我现在在很多云上成功使用了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,但我无法用来解决我的问题。
我做错了什么?
答案 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
总结一下:
==>机器正常运行..
答案 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