Docker为什么说不能执行“ bash”? [英] Why does Docker say it can't execute 'bash"?

查看:113
本文介绍了Docker为什么说不能执行“ bash”?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我可以从Docker Hub运行映像。



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

  docker run -P mylocalimage 

  docker run -P mylocalimage bin / a3-回写

  ... 

I得到:

  docker env:无法执行'bash':没有这样的文件或目录 

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



基本映像为 errordeveloper / oracle-jdk



感谢您的帮助。



Ashley。

  [{
Architecture : amd64,
作者: ABC email@email.com,
Checksum: tarsum.dev + sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b 855,
Comment:,
Config:{
AttachStderr:false,
AttachStdin:false,
AttachStdout :false,
Cmd:[],
CpuShares:0,
Cpuset:,
Domainname:,
Entrypoint:[
bin / a3-回写
],
Env:[
PATH = / usr / local / sbin:/ usr /本地/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/jdk1.8.0_25/bin,
JAVA_HOME = / usr / jdk1.8.0_25
],
ExposedPorts:空,
主机名: 5bf0de3d0926,
图片: abd65ce243a5b015bb49f3e958103a5cc0c5f14938df4e480ded25f3ecf878e7,
MacAddress: b内存:0,
内存交换:0,
NetworkDisabled:否,
OnBuild:[],
OpenStdin:否,
PortSpecs:null,
StdinOnce:false,
Tty:false,
User: daemon,
Volumes:空,
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:空,
主机名: 5bf0de3d0926,
图片: abd65ce243a5b015bb49f3e958103a5cc0c5f14938df4e480ded25f3ecf878e7,
MacAddress :,
内存:0,
MemorySwap:0,
NetworkDisabled:假,
OnBuild:[],
OpenStdin:否,
PortSpecs:空,
StdinOnce:否,
Tty:否,
User: daemon,
卷:空,
WorkingDir: / opt / docker
},
创建: 2015-01-13T05:25:38.467586784Z,
DockerVersion: 1.4.1,
标识: ddbd5d3f52cc5fd41605c95e4525cd2f3e0808a3741b3f8d77f46f0661945f7b,
OS: LINUX,
父: abd65ce243a5b015bb49f3e958103a5cc0c5f14938df4e480ded25f3ecf878e7,
Size:0,
VirtualSize:390826666
}
]


解决方案

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



所以这不起作用:

  $ docker run -it busybox bash 
exec: bash:在$ PATH2015 / 01/15 11中找不到可执行文件: 09:08来自守护程序的错误响应:
无法启动容器a5074af2f81f8cc1eb0076f4ec9ada5f87be1440006f54a9b06ab701fc60176a:exec:
bash:在$ PATH


但是这样做:

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

由于您的入口点脚本可能会进一步导致复杂化,但是您可以始终优先。


I'm using Docker on MacOSX (with Boot2Docker).

I can run images from Docker Hub.

However, when I try to run one of my own images like this:

docker run -P mylocalimage

or

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

or

...

I get:

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

I guess that it can't find a bash binary to execute in the container, but why?

The base image is errordeveloper/oracle-jdk

Thanks for any help.

Ashley.

[{
    "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
}
]

解决方案

Your image is based on busybox, which doesn't have a bash shell. It does have a shell at /bin/sh.

So this doesn't work:

$ 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

But this does:

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

There may be further complications due to your entrypoint script, but you can always override that.

这篇关于Docker为什么说不能执行“ bash”?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆