我目前正在尝试使用运行docker provider(https://www.vagrantup.com/docs/docker/)的其他Vagrantfiles来完成一个Vagrantfile作为docker host。
我使用centos/atomic-host
作为基本框。问题是,当我运行vagrant up
时,我得到:
Vagrant执行的Docker命令未成功完成! 将显示与命令输出一起运行的命令 下方。
命令:“docker”“ps”“ - a”“ - q”“ - no-trunc”
Stderr:无法连接到Docker守护程序。 docker守护程序是否在此主机上运行?
这是因为流浪者用户不属于docker组。我通过将其添加到我的Vagrantfile来解决这个问题:
# Add user vagrant to docker group
$docker_group = <<-DOCKER_GROUP
groupadd docker
usermod -a -G docker vagrant
systemctl restart docker
DOCKER_GROUP
config.vm.provision "docker_group", type: "shell", privileged: true, inline: $docker_group
我第一次运行流浪汉时仍然会遇到异常但是从第二次开始工作。我怀疑的原因是在将vagrant用户添加到docker组之后我需要注销/登录才能使更改生效。
为了记录,我尝试在newgrp docker
脚本的末尾添加$docker_group
,但它无法解决问题。我怀疑docker provider会启动一个单独的会话。
有人为此找到了解决方案吗?
答案 0 :(得分:0)
我不知道Vagrantfile,但我从你的问题中理解的是,你需要一些方法来刷新用户的组,而不必重新登录。
如果是这种情况,以下几点可能会对您有所帮助:
我几乎不认为你提到的问题是Vagrantfile,它只是它的方式。要更新用户的配置,您需要重新登录用户。不过,如果你想找到办法,上面两个可能会帮助你。