2014-02-27 82 views
3

我已經通過運行Resin.io blog中描述的步驟安裝了Docker(0.8.0-1)。基本上,一切正常,我可以啓動docker守護進程並運行客戶端。在Raspberry Pi上運行Docker時,啓動容器會不時失敗

不幸的是,當我嘗試運行一個容器時,它有時失敗。這不取決於實際的容器,因爲當你重複它的工作命令時。有時它需要兩次以上的試驗,有時它也是第一次嘗試。我run命令基本上是這樣的:

$ docker run -i -t --rm=true resin/rpi-raspbian bash 

所以,沒有什麼花哨那麼遠,錯誤消息我得到的只是告訴我,該容器退出,code 1,不管這意味着什麼。

基本上,當我嘗試build Dockerfile時,會發生同樣的情況:通常,它只能用於單個步驟,並且會在下一個步驟失敗。由於Docker在內部緩存結果,因此您可以通過手動一次又一次地執行Dockerfile來構建Dockerfile,並且在每次運行中您都可以進一步獲得更多信息。如果失敗,再次code 1

確切的錯誤信息是:

2014/02/27 18:15:45 Error: start: Cannot start container 99fc6a3327fb4af25e6c7a07d992009dde8a5425de89f44aae76ce4740e09492: exit status 1

讓我驚訝的是,當我運行一個docker ps -a後,容器沒有得到刪除(至少,不能創建的那些仍然存在) - 而且,更令人驚訝的是,該命令列出了狀態碼爲-1

我沒有看到任何日誌,當我運行

$ docker logs 99fc 

什麼可能導致這些問題的任何想法?

UPDATE

不幸的是,既不是/var/log/messages文件夾,也沒有在系統上/var/log/syslog文件夾,但如果我跑dmesg最後一行是:

[56954.479079] device veth4FI4FH entered promiscuous mode 
[56955.270388] docker0: port 1(veth4FI4FH) entered forwarding state 
[56955.270493] docker0: port 1(veth4FI4FH) entered forwarding state 
[56955.480603] docker0: port 1(veth4FI4FH) entered disabled state 
[56955.484685] device veth4FI4FH left promiscuous mode 
[56955.484726] docker0: port 1(veth4FI4FH) entered disabled state 

更新2

我現在發現我通過調用journalctl得到擴展日誌(因爲我在基於系統的系統)。我得到的是:

Feb 28 09:31:02 white docker[123]: 2014/02/28 09:31:02 POST /v1.9/containers/create 
Feb 28 09:31:02 white docker[123]: [/docker|5cd5747f] +job create() 
Feb 28 09:31:02 white docker[123]: [/docker|5cd5747f] -job create() = OK (0) 
Feb 28 09:31:02 white docker[123]: 2014/02/28 09:31:02 POST /v1.9/containers/8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916/attach?stderr=1&stdin=1&stdout=1&stream=1 
Feb 28 09:31:02 white docker[123]: [/docker|5cd5747f] +job inspect(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916, container) 
Feb 28 09:31:02 white docker[123]: [/docker|5cd5747f] -job inspect(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916, container) = OK (0) 
Feb 28 09:31:02 white docker[123]: [/docker|5cd5747f] +job attach(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) 
Feb 28 09:31:02 white docker[123]: 2014/02/28 09:31:02 POST /v1.9/containers/8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916/start 
Feb 28 09:31:02 white docker[123]: [/docker|5cd5747f] +job start(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) 
Feb 28 09:31:02 white docker[123]: [/docker|5cd5747f] +job allocate_interface(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) 
Feb 28 09:31:02 white docker[123]: [/docker|5cd5747f] -job allocate_interface(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) = OK (0) 
Feb 28 09:31:02 white docker[123]: [/docker|5cd5747f] +job allocate_port(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) 
Feb 28 09:31:02 white docker[123]: [/docker|5cd5747f] -job allocate_port(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) = OK (0) 
Feb 28 09:31:03 white docker[123]: [error] container.go:1244 Error running container: exit status 1 
Feb 28 09:31:03 white docker[123]: [/docker|5cd5747f] +job release_interface(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) 
Feb 28 09:31:03 white kernel: device vethHXP55Y entered promiscuous mode 
Feb 28 09:31:03 white avahi-daemon[131]: Withdrawing workstation service for vethUTI4YT. 
Feb 28 09:31:03 white docker[123]: [/docker|5cd5747f] -job release_interface(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) = OK (0) 
Feb 28 09:31:03 white docker[123]: [/docker|5cd5747f] -job attach(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) = OK (0) 
Feb 28 09:31:04 white docker[123]: [/docker|5cd5747f] +job release_interface(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) 
Feb 28 09:31:04 white docker[123]: 2014/02/28 09:31:04 Unable to unmap port 0.0.0.0:80: port is not mapped 
Feb 28 09:31:04 white docker[123]: [/docker|5cd5747f] -job release_interface(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) = OK (0) 
Feb 28 09:31:04 white docker[123]: [error] container.go:1299 8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916: Error closing Pty master: invalid argument 
Feb 28 09:31:04 white kernel: docker0: port 1(vethHXP55Y) entered forwarding state 
Feb 28 09:31:04 white kernel: docker0: port 1(vethHXP55Y) entered forwarding state 
Feb 28 09:31:04 white docker[123]: Cannot start container 8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916: exit status 1[/docker|5cd5747f] -job start(8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916) = ERR (1) 
Feb 28 09:31:04 white docker[123]: [error] api.go:959 Error: start: Cannot start container 8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916: exit status 1 
Feb 28 09:31:04 white docker[123]: [error] api.go:91 HTTP Error: statusCode=500 start: Cannot start container 8d2928a6a4b4c57aa2760a3681a5fbcf53f890e85d6830b97b9245366d284916: exit status 1 
Feb 28 09:31:04 white kernel: docker0: port 1(vethHXP55Y) entered disabled state 
Feb 28 09:31:04 white avahi-daemon[131]: Withdrawing workstation service for vethHXP55Y. 
Feb 28 09:31:04 white kernel: device vethHXP55Y left promiscuous mode 
Feb 28 09:31:04 white kernel: docker0: port 1(vethHXP55Y) entered disabled state 

因此很明顯,這個問題是在container.go:1244試圖啓動容器。

這有什麼幫助嗎?

+1

泊塢與在Linux內核中的cgroup(LXC)來實現。當他們出錯時,任何信息將被寫入控制檯dmesg或/ var/log/syslog(有時在某些發行版上稱爲/ var/log/messages) –

+0

剛剛檢查過。控制檯上的輸出是我在問題中寫的。不幸的是,/ var/log/syslog和/ var/log/messages都不存在,但是每個容器都有一個帶有日誌的/ var/log/lxc文件夾:不幸的是,文件'99c ... .log'是空的: - (。請參閱我的更新後的問題 –

回答

4

正如你使用我們的Docker的Resin端口,我會假設你正在運行Arch linux。在Arch中,最新的lxc軟件包是lxc-1.0,docker已經知道這個版本的lxc [1]有問題。

將lxc降爲0.9或0.8應該可以解決問題。 Arch保留最近在/var/cache/pacman/pkg下載的軟件包緩存。因此,作爲root用戶,請執行pacman -U /var/cache/pacman/pkg/lxc-<VERSION>,然後重新啓動docker守護進程。

如果您沒有找到緩存的軟件包,那麼您可以在這裏找到更多的方法來實現它[2]。

[1] https://github.com/dotcloud/docker/issues/4298

[2] https://wiki.archlinux.org/index.php/Downgrading_Packages

+0

是的,我們正在使用ArchLinux(以及相當新的版本),下週我們會試一試,並告訴你結果如何,非常感謝你的幫助: ))) –

+0

我們試圖按照你的指示。由於我們無法在我們的本地pacman緩存中找到任何舊版本的lxc,我們試圖掃描互聯網和Arch Rollback Machine以查找舊版本的lxc,並在http://seblu.net/a/arm/packages/找到它們。升/ LXC /。但不幸的是,檔案只包含爲其他架構(x86,i686)編譯的軟件包,由於我們在Pi上運行,我們需要爲armv6編譯的軟件包。要了解舊的armv6軟件包的任何下載鏡像嗎?預先感謝任何提示或提示正確的方向:-)! –

+1

在這種情況下,我建議只是git克隆PKGBUILD文件並手動編譯所需的特定版本的lxc。這是你要克隆 https://projects.archlinux.org/svntogit/community.git/ 回購,則需要籤承諾5b9771f90ab03550396835ffc1c47dd619553ff5 – petrosagg

相關問題