为什么Docker不能执行'bash'?

发布于 2021-02-01 12:50:53

我在MacOSX上使用Docker(带有Boot2Docker)。

我可以从Docker Hub运行映像。

但是,当我尝试像这样运行自己的映像之一时:

docker run -P mylocalimage

要么

docker run -P mylocalimage bin/a3-write-back

要么

...

我得到:

docker "env: can't execute 'bash': No such file or directory"

我猜它找不到在容器中执行的bash二进制文件,但是为什么呢?

基本图像是 errordeveloper/oracle-jdk

谢谢你的帮助。

阿什莉

[{
    "Architecture": "amd64",
    "Author": "ABC email@email.com",
    "Checksum": "tarsum.dev+sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "Comment": "",
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": [
            "bin/a3-write-back"
        ],
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/jdk1.8.0_25/bin",
            "JAVA_HOME=/usr/jdk1.8.0_25"
        ],
        "ExposedPorts": null,
        "Hostname": "5bf0de3d0926",
        "Image": "abd65ce243a5b015bb49f3e958103a5cc0c5f14938df4e480ded25f3ecf878e7",
        "MacAddress": "",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": [],
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "daemon",
        "Volumes": null,
        "WorkingDir": "/opt/docker"
    },
    "Container": "987d2279b6e42195fe8e732c0637798926db6cfaeab93fcc25a3f10dac73f111",
    "ContainerConfig": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "/bin/sh",
            "-c",
            "#(nop) CMD []"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": [
            "bin/a3-write-back"
        ],
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/jdk1.8.0_25/bin",
            "JAVA_HOME=/usr/jdk1.8.0_25"
        ],
        "ExposedPorts": null,
        "Hostname": "5bf0de3d0926",
        "Image": "abd65ce243a5b015bb49f3e958103a5cc0c5f14938df4e480ded25f3ecf878e7",
        "MacAddress": "",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": [],
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "daemon",
        "Volumes": null,
        "WorkingDir": "/opt/docker"
    },
    "Created": "2015-01-13T05:25:38.467586784Z",
    "DockerVersion": "1.4.1",
    "Id": "ddbd5d3f52cc5fd41605c95e4525cd2f3e0808a3741b3f8d77f46f0661945f7b",
    "Os": "linux",
    "Parent": "abd65ce243a5b015bb49f3e958103a5cc0c5f14938df4e480ded25f3ecf878e7",
    "Size": 0,
    "VirtualSize": 390826666
}
]
关注者
0
被浏览
328
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    您的图片基于不带bash外壳的busybox。它的确有外壳/bin/sh

    所以这不起作用:

    $ docker run -it busybox bash
    exec: "bash": executable file not found in $PATH2015/01/15 11:09:08 Error response from daemon: 
    Cannot start container a5074af2f81f8cc1eb0076f4ec9ada5f87be1440006f54a9b06ab701fc60176a: exec:  
    "bash": executable file not found in $PATH
    

    但这确实是:

    $ docker run -it busybox /bin/sh
    / #
    

    由于您的入口点脚本,可能还会带来更多复杂性,但是您始终可以覆盖它。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看