如何使用docker provider在vagrant上运行provision.sh
现在我已经在很多云上成功地使用了流浪者 我已经决定和docker一起尝试一些东西,但我可能错过了一些非常基本的东西,因为我失败了很多 我写了这个流浪汉档案:如何使用docker provider在vagrant上运行provision.sh,vagrant,docker,Vagrant,Docker,现在我已经在很多云上成功地使用了流浪者 我已经决定和docker一起尝试一些东西,但我可能错过了一些非常基本的东西,因为我失败了很多 我写了这个流浪汉档案: Vagrant.configure(“2”)do | config| config.vm.synced_文件夹“./synced_文件夹“,“/vagrant” config.vm.provision“shell”do|s| s、 path=“provision.sh” s、 特权=错误 结束 config.vm.provider:dock
Vagrant.configure(“2”)do | config|
config.vm.synced_文件夹“./synced_文件夹“,“/vagrant”
config.vm.provision“shell”do|s|
s、 path=“provision.sh”
s、 特权=错误
结束
config.vm.provider:docker do | docker,覆盖|
docker.image='ubuntu'
结束
结束
这种配置适用于其他云(当然,如果我向其添加特定的云详细信息)
我的provision.sh
文件只包含echo“hello world”
我的同步文件夹有一个虚拟文件
我已经验证了ubuntu
image在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
我已经找到了很多关于这个错误的问题和解答,但是没有什么可以用来解决我的问题
我做错了什么?我也经历过同样的事情,并追随了一段时间。看来这将由即将发布的《流浪汉》小版本来解决
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
或者你可以这样做:
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
所以我一直缺少一些非常基本的东西 我找到的解决办法很简单。使用来自以下方面的惊人贡献: 这里需要注意的重要一点是Dockerfile,它定义了容器中的SSH连接。如果没有SSH,它根本无法工作 然而-另一个人们缺少的默认事实-docker使用一个需要权限的套接字,但是运行sudo vagrant up--provider将无法解决此问题。要想顺利运行,您应该先
sudo su-
,或者将您的用户添加到docker
组
请阅读更多关于此的信息:
因此,总结一下:
- 克隆git存储库
- sudo su-
- 流浪者——提供者码头工人
==>机器已启动且运行良好 即使这将运行命令,我也希望运行配置脚本。这个问题的答案似乎是设置SSH。如果provision.sh中只有简单的内容,您可以将它们放在Dockerfile中,它们将在您执行流浪设置时执行。另一个选项:对于SSH,您可以向ubuntu基本映像添加SSH服务,或者提取现有的支持SSH的基本映像,例如phusion