2016-01-08 29 views
0

此問題已發佈到Vagrant Google Group。流浪漢和碼頭服務提供商

我的環境:

OS-X 10.9.4 
VirtualBox 5.012 r104815 
Vagrant 1.7.4 

嘗試使用泊塢窗供應商,與主機是geerlingguy/centos7

放置:

config.vm.provision "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 

我可以運行中樞搬運工容器,但是當我嘗試從Dockerfile打造泊塢窗容器我得到:

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' 

的主機,但隨後沒有找到泊塢窗命令。

也許我應該增加我這樣做在主機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 

和流浪者可以運行泊塢窗。

這是它翻倒(在泊塢窗遊民文件):

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

您在設置「確保流浪使用者可以運行docker命令」配置之後重新配置虛擬機? –

+0

好的,所以在放入這些行之前,docker vagrantfile會在一些docker命令中崩潰。我把最後一個'reload'行放在了(使用reload插件),然後它似乎流浪可以運行docker命令 - 實際上它可以旋轉碼頭集線器的容器,只是不會因爲符號鏈接錯誤而生成,只有sudo它似乎可以構建 – user2237076

+0

I強烈認爲這是由於流浪者用戶需要root權限才能運行docker。你是否[創建碼頭組,並添加流浪用戶](http://askubuntu.com/questions/477551/how-can-i-use-docker-without-sudo)? –

回答

0

我的解決方案是在/ usr/bin/docker上設置粘性位。

這允許碼頭遵循sym鏈接並完成碼頭構建。模糊不清,並不完全確定故障所在。我基本上遵循了建造碼頭集裝箱與流浪者的建議工作流程。

0

修復「無業遊民」用戶

您可能必須要經過一個few steps提升碼頭工人的權限。否則,您可以嘗試運行$ sudo docker而不僅僅是$ docker

或修復「根」用戶:如果你想使用root,而不是

,這聽起來像碼頭工人可能不是根用戶的路徑。

vagrant ssh到機器並驗證這兩個根&流浪漢用戶的路徑:

$ echo $PATH 

然後,add缺少搬運工路徑你的root用戶的$PATH

+0

如果你不知道,你可以[回答你自己的問題](http://stackoverflow.com/help/self-answer)和標記是正確的答案。這樣,這個問題就不會「沒有答案」。除非,你在等別人來一起提供輸入:) –

+0

完成,謝謝你的提示,你的時間和你的意見。 – user2237076