“来自守护进程的错误响应:无法启动容器......没有这样的文件或目录”在Oracle Linux上运行hello-world

时间:2016-01-14 17:36:34

标签: linux oracle docker

TLDR:我正在尝试在Oracle Linux上运行hello-world容器,我收到一条错误消息:来自守护进程的错误响应:无法启动容器724ed94d9249b636d6820fb8c2e4ba64232f426812e5b03545762 532751f434e:[8]系统错误:mkdir / var / lib / docker / devicemapper / mnt / 724ed94d9249b636d6820fb8c2e4ba6423 2f426812e5b03545762532751f434e / rootfs / sys / fs / cgroup:没有这样的文件或目录

我正在尝试在Oracle Linux机器上安装和运行Docker。我已按照Oracle网页(https://docs.oracle.com/cd/E37670_01/E37355/html/section_kfy_f2z_fp.html)上的说明进行操作,但遇到了一些问题。

安装docker-engine时,我遇到了UEK软件包的依赖问题,但我可以通过此页面上的说明解决这些问题(https://docs.oracle.com/cd/E37670_01/E37355/html/ol_obtain_uek.html)。

docker-engine似乎运行得很好,但是当我尝试运行hello-world容器时出现错误:

[root ~]# docker run hello-world
Timestamp: 2016-01-13 14:58:06.420677559 -0200 BRST
Code: System error

Message: mkdir /var/lib/docker/devicemapper/mnt/724ed94d9249b636d6820fb8c2e4ba64232f426812e5b03545762532 751f434e/rootfs/sys/fs/cgroup: no such file or directory

Frames:
0: setupRootfs
Package: github.com/opencontainers/runc/libcontainer
File: rootfs_linux.go@40

1: Init
Package: github.com/opencontainers/runc/libcontainer.(*linuxStandardInit)
File: standard_init_linux.go@57

2: StartInitialization
Package: github.com/opencontainers/runc/libcontainer.(*LinuxFactory)
File: factory_linux.go@242

3: initializer
Package: github.com/docker/docker/daemon/execdriver/native
File: init.go@35

4: Init
Package: github.com/docker/docker/pkg/reexec
File: reexec.go@26

5: main
Package: main
File: docker.go@18

6: main
Package: runtime
File: proc.go@63

7: goexit
Package: runtime
File: asm_amd64.s@2232
Error response from daemon: Cannot start container 724ed94d9249b636d6820fb8c2e4ba64232f426812e5b03545762 532751f434e: [8] System error: mkdir /var/lib/docker/devicemapper/mnt/724ed94d9249b636d6820fb8c2e4ba6423 2f426812e5b03545762532751f434e/rootfs/sys/fs/cgroup: no such file or directory

有人可以帮我吗?

我对Linux和Docker的了解很少,所以如果我忘记提及任何重要信息,请询问!! = o)

3 个答案:

答案 0 :(得分:2)

这是一个已知的issue,其内核顺序不是2.6.32-431。 原因是:

  

“由于也不可能使用lxc在RH6上进行系统化。”

我尝试在CentOS6.3(与RedHat / OracleLinux非常相似)中进行测试,该内核具有2.6.32-279.5.2.el6.x86_64内核并且遇到了同样的问题(更多信息在日志中)。

[user@localhost ~]$ docker -v
Docker version 1.7.1, build 786b29d
[user@localhost ~]$ docker run  hello-world
Error response from daemon: Cannot start container 6853f515819f8928fa5a9b4f2b2af2c117e2c6183dbc1f9ea59c29a28adc45a8: no such file or directory
[user@localhost ~]$ 

如果可以选择升级内核,可以解决这个问题。所以我升级了内核(2.6.32-573.12.1.el6.x86_64)并且docker工作了!

PS:未经测试,请勿在生产系统中执行此操作。

[root@localhost ~]# yum -y update kernel
Loaded plugins: fastestmirror, presto
Loading mirror speeds from cached hostfile
 * base: ftp.crc.dk
...
Dependency Updated:
  dracut.noarch 0:004-388.el6    dracut-kernel.noarch 0:004-388.el6    dracut-network.noarch 0:004-388.el6    kernel-firmware.noarch 0:2.6.32-573.12.1.el6   

Complete!
[user@localhost ~]$ reboot
...
[user@localhost ~]$ uname -r
2.6.32-573.12.1.el6.x86_64
[user@localhost ~]$ docker run hello-world

Hello from Docker.
...
For more examples and ideas, visit:
 https://docs.docker.com/userguide/

[user@localhost ~]$ 

所以,我建议你检查你是否有一个旧版本的内核< 2.6.32-431并进行内核升级并测试它。

答案 1 :(得分:1)

要在Oracle Linux上运行Docker,您需要安装"Unbreakable Enterprise Kernel" 3.8 or higher

之后,您可以关注installation procedure in the documentation

请注意,自Docker 1.8.0以来,Docker不再支持内核2.6;基于2.6的发行版(RHEL6 / CentOS6)的最新可用版本是docker 1.7.1

答案 2 :(得分:0)

你需要的内核是kernel-uek,而不是" kernel"。 普通内核与RHEL6兼容,因此它无法获得所需的修复/更新。 UEK内核工作正常。

考虑卸载RHEL内核,我只是在重启时将内核更新切换回正常内核的情况。你不希望这种情况发生: - (