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

TLDR:我试图在Oracle Linux上运行hello-world容器,并且收到错误消息:来自守护程序的错误响应:无法启动容器724ed94d9249b636d6820fb8c2e4ba64232f426812e5b03545762 532751f434e:[8]系统错误:mkdir / var / lib / docker / devicemapper / mnt / 724ed94d9249b636d6820fb8c2e4ba6423 2f426812e5b03545762532751f434e / rootfs / sys / fs / cgroup:no such file or directory

我正尝试在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引擎似乎运行得很好,但是当我尝试运行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方面的知识都很less,所以如果我忘记提及任何重要的信息,请问!! = o)

要在Oracle linux上运行Docker,需要安装“Unbreakable Enterprise Kernel”3.8或更高版本。

之后,您可以按照文档中的安装过程

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

这是内核顺序超过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:不要在没有testing的生产系统中这样做。

 [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 ~]$ 

所以,我build议你检查一下你的内核版本是否低于2.6.32-431,然后进行内核升级并testing一下。

你需要的内核是kernel-uek,而不是“kernel”。 正常的内核是RHEL6兼容的,因此它不能有你需要的修复/更新。 UEK内核工作正常。

还考虑卸载RHEL内核,我刚刚得到了一个内核更新在重新启动时切换回正常内核的情况。 你不希望发生这种情况:-(