从Vagrantfile

时间:2017-03-08 09:34:01

标签: docker vagrant vagrantfile

我目前正在尝试使用运行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会启动一个单独的会话。

有人为此找到了解决方案吗?

1 个答案:

答案 0 :(得分:0)

我不知道Vagrantfile,但我从你的问题中理解的是,你需要一些方法来刷新用户的组,而不必重新登录。

如果是这种情况,以下几点可能会对您有所帮助:

  1. 为什么不再向用户提及:您可以再次登录用户,并更新所有用户的组。
  2. 或者您可以尝试Legooolas提到的this方法。
  3. 我几乎不认为你提到的问题是Vagrantfile,它只是它的方式。要更新用户的配置,您需要重新登录用户。不过,如果你想找到办法,上面两个可能会帮助你。