Reputation: 2529
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 protected]",
"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
}
]
Upvotes: 86
Views: 138185
Reputation: 525
This can be because you are using an alpine image and it doesn't have bash by default.
Add the following line into the Dockerfile
RUN apk update && apk add bash
Reference: https://davidwalsh.name/docker-bash
Upvotes: 1
Reputation: 368
You can solve this and many other common issues by adding this to your Dockerfile
:
RUN apk update && apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev nasm bash vips-dev git
Upvotes: 0
Reputation: 3599
If you use sbt-native-packager you just need to add support
enablePlugins(AshScriptPlugin)
Upvotes: 0
Reputation: 113
How to override docker run with bash if your image has an ENTRYPOINT defined:
docker run -it --entrypoint /bin/bash <your-image>
Upvotes: 6
Reputation: 574
This won't work if your image has a defined ENTRYPOINT. For these cases use: ' docker run -it --entrypoint /bin/bash '
Upvotes: 2
Reputation: 46500
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.
Upvotes: 165