此问题也已发布到Vagrant Google Group。
我的环境:
OS-X 10.9.4
VirtualBox 5.012 r104815
Vagrant 1.7.4
尝试使用docker provider,主机为geerlingguy / centos7
放置:
config.vm.provision "docker"
在主机vagvern文件中,它使用以下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
如果我将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命令。
也许我应该添加我在host 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
将成功创建一个容器。
我一直在敲我的头2天 - 阅读关于virtualbox中的符号链接问题的所有种类并尝试了各种不同的设置。
有人可以告诉我应该如何解决这个问题。
感谢。
答案 0 :(得分:0)
修复“流浪”用户:
您可能需要通过few steps来提升泊坞窗的权限。否则,您可以尝试运行$ sudo docker
而不仅仅是$ docker
。
或修复“root”用户:
如果你想使用root,听起来像docker可能不在root用户的路径中。
vagrant ssh
进入机器并验证root&的路径流浪者用户:
$ echo $PATH
然后,add您的root用户的$PATH
缺少泊坞路径。
答案 1 :(得分:0)
我的解决方案是在/ usr / bin / docker上设置粘滞位。
这允许docker跟踪sym链接并完成docker build。模糊不清,并不完全确定故障所在。我基本上遵循了建议使用vagrant的docker容器的工作流程。