2014-02-27 83 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

相关问题