how to ssh docker container

DockerSsh

Docker Problem Overview


I am running the container hypriot/rpi-busybox-httpd

I am trying to ssh to docker container: but it is giving error :

pi@raspberrypi:~ $ docker exec -it cc55da85b915 bash
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"bash\": executable file not found in $PATH"

pi@raspberrypi:~ $ docker exec -it cc55da85b915 sh
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"sh\": executable file not found in $PATH"

am I doing the right away ?

Docker Solutions


Solution 1 - Docker

It could be your image does not have the binary /bin/bash installed (as suggested before), I had the same problem and I was able to enter into the container using /bin/sh

docker exec -ti cc55da85b915 /bin/sh

Another workaround could be execute directly the commands without get access to any shell.

docker exec -ti cc55da85b915 ls /etc

Solution 2 - Docker

The image you're using seems that it doesn't have the binary /bin/bash installed but it should have /bin/sh

Try:

docker exec -it cc55da85b915 sh

Solution 3 - Docker

You have many different ways to do that, you can attach using docker's attach command.

$ sudo docker attach cc55da85b915 #by ID

Or you can use docker exec command:

$ sudo docker exec -i -t cc55da85b915 /bin/bash

If /bin/bash fails, you can use /bin/sh that works in more containers:

$ sudo docker exec -i -t cc55da85b915 /bin/sh

Solution 4 - Docker

You might need to specify the full path to bash, e.g.:

docker exec -it cc55da85b915 /bin/bash

or /usr/local/bin/bash, or wherever bash is located in that image.

Hope this helps!

Solution 5 - Docker

if you are still looking for an answer. This worked for me on windows.

winpty docker exec -it <containerid> sh

Solution 6 - Docker

For Alpine based image, docker exec -ti cc55da85b915 /bin/sh and docker exec -ti cc55da85b915 ls /etc worked. As suggested by 'Esteban Collado'.

However for other Linux versions I use, docker exec -ti cc55da85b915 bash

Solution 7 - Docker

Try Below Command:

docker exec -it cc55da85b915 /bin/busybox sh

To list all the available commands use:

docker exec -it cc55da85b915 /bin/busybox --list

Solution 8 - Docker

This will also relevant for Kubernetes pods.

For example if you'll try to connect to a pod which doesn't contain the shell you specified:

kubectl exec -it some-busybox-pod bash

(busybox have sh on it not bash).

You'll end up with the same error:

OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"bash\": executable file not found in $PATH": unknown
command terminated with exit code 126

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCiasto piekarzView Question on Stackoverflow
Solution 1 - DockerEsteban ColladoView Answer on Stackoverflow
Solution 2 - DockerAlaeddineView Answer on Stackoverflow
Solution 3 - DockerAsier GomezView Answer on Stackoverflow
Solution 4 - DockerCastagliaView Answer on Stackoverflow
Solution 5 - DockerPradeep SreeramView Answer on Stackoverflow
Solution 6 - Dockersuper-coderView Answer on Stackoverflow
Solution 7 - DockerUmar MurtazaView Answer on Stackoverflow
Solution 8 - DockerRtmYView Answer on Stackoverflow