我目前正在尝试完成一个运行Docker提供者的其他VagrantFiles用作Docker主机的VagrantFile(https://wwwww.vagrantup.com/docs/docs/docker/docker/)。
我将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
我仍然在第一次流动的情况下获得了例外,但它是从第二次开始的。我怀疑的原因是,将流浪者用户添加到Docker组后,我需要注销/登录以进行更改才能生效。
对于记录,我尝试在我的$docker_group
脚本末尾添加newgrp docker
,但不能解决问题。我怀疑Docker提供商开启了一个单独的会话。
有人找到了解决方案?
我不知道vagrantfile,但是我从您的问题中了解的是,您需要某种方法来刷新用户的组而不必重新恢复。
如果是这样,以下几点可能会帮助您:
- 为什么不再次向用户提供SU:您可以再次登录用户,所有用户的组将被更新。
- 否则您可以尝试这种方法LEGOOOLAS已提及。
我几乎不认为您提到的问题是在VagrantFile中,这就是事实。要更新用户的配置,您需要与用户重新使用。不过,如果您想找到一种方法,以上两个可能会帮助您。