【发布时间】:2016-01-08 12:21:15
【问题描述】:
这个问题也已发布到 Vagrant Google Group。
我的环境:
OS-X 10.9.4
VirtualBox 5.012 r104815
Vagrant 1.7.4
尝试使用docker provider,宿主机为geerlingguy/centos7
通过放置:
config.vm.provision "docker"
在主机 vagrant 文件中,它使用以下 docker 版本自动配置我的主机:
Version: 1.8.2-el7.centos
API version: 1.20
Package Version: docker-1.8.2-10.el7.centos.x86_64
Go version: go1.4.2
Git commit: a01dc02/1.8.2
Built:
OS/Arch: linux/amd64
Server:
Version: 1.8.2-el7.centos
API version: 1.20
Package Version:
Go version: go1.4.2
Git commit: a01dc02/1.8.2
Built:
OS/Arch: linux/amd64
我可以从集线器运行 docker 容器,但是当我尝试从 Dockerfile 构建 docker 容器时,我得到:
Command: "docker" "build" "/var/lib/docker/docker_build_1b35c3f0278e1a3b37d1578d7ce326e5"
Stderr:
Stdout: unable to prepare context: unable to evaluate symlinks in context path: lstat /var/lib/docker/docker_build_1b35c3f0278e1a3b37d1578d7ce326e5: permission denied
如果我 vagrant ssh 进入 centos7 主机并运行
docker build /var/lib/docker/docker_build_1b35c3f0278e1a3b37d1578d7ce326e5
我看到同样的错误,但如果我运行
sudo docker build /var/lib/docker/docker_build_1b35c3f0278e1a3b37d1578d7ce326e5
构建运行。
我试过了:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
对于主机,但它没有找到 docker 命令。
也许我应该在主机 vagrantfile 中添加我正在执行此操作:
# Ensure vagrant user can run docker command
config.vm.provision "shell", inline: "sudo groupadd docker;true"
config.vm.provision "shell", inline: "sudo usermod -a -G docker vagrant;true"
config.vm.provision "shell", inline: "docker version"
config.vm.provision :reload
vagrant 可以运行 docker。
这是它失败的地方(在 docker vagrant 文件中):
config.vm.provider "docker" do |docker|
docker.build_dir = /path/to/my/dockerfile/on/the/host/vm (FAILS WITH symlink ERROR)
end
但是
config.vm.provider "docker" do |docker|
docker.image = hub/image
end
将成功创建容器。
这两天我一直在努力——阅读各种有关 virtualbox 中符号链接问题的信息,并尝试了各种不同的设置。
谁能告诉我应该如何解决这个问题。
谢谢。
【问题讨论】:
-
您在设置“确保 vagrant 用户可以运行 docker 命令”配置后重新配置 VM 对吗?
-
好的,所以在放入这些行之前,docker vagrantfile 会因某些 docker 命令而崩溃。我将最后一个“重新加载”行放入(使用重新加载插件),然后似乎 vagrant 可以运行 docker 命令 - 实际上它可以从 docker hub 旋转容器,只是由于符号链接错误而无法构建,似乎只有 sudo 可以构建跨度>
-
我强烈认为这是由于流浪用户需要 root 权限才能运行 docker。你create the docker group, and add the vagrant user to it了吗?
-
我认为我在# Ensure vagrant user can run docker command 中这样做很明显?我认为它本身不是运行命令的问题,但问题与文件夹权限和以下符号链接有关。
-
我相信这是问题所在:github.com/docker/docker/issues/15037 看起来我的主机上需要一个新的 docker。我怎样才能完全在 Vagrantfile 中编写脚本?
标签: docker vagrant virtualbox