【问题标题】:“Error response from daemon: Cannot start container … no such file or directory” on Oracle Linux running hello-world“来自守护进程的错误响应:无法启动容器……没有这样的文件或目录”在运行 hello-world 的 Oracle Linux 上
【发布时间】:2016-04-20 03:57:25
【问题描述】:

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)

【问题讨论】:

    标签: linux oracle docker


    【解决方案1】:

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

    “因为在 RH6 上使用 lxc 也无法启动 systemd。”

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

    [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-573.12.1.el6.x86_64。当我运行“yum -y update kernel”命令时,它响应没有更新。
    【解决方案2】:

    要在 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

    【讨论】:

    • 感谢您的回答@thaJeztah。我已经在使用 Oracle Documentation 中描述的 UEK 3.8。我尝试了 docker 1.7.1 并且成功了。
    【解决方案3】:

    您需要的内核是 kernel-uek,而不是“内核”。 普通内核与 RHEL6 兼容,因此它无法提供您需要的修复/更新。 UEK 内核运行良好。

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

    【讨论】:

    • 我按照Oracle Documentation 中的说明安装了 kernel-uek,但它不适用于 Docker 1.8.0。我将 Docker 版本更改为 1.7.1,它工作正常。
    猜你喜欢
    • 1970-01-01
    • 2019-07-22
    • 2017-04-25
    • 1970-01-01
    • 2016-07-12
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    相关资源
    最近更新 更多