I would like to send a command to an already existing docker container.
I am forced to do it via powershell or CMD, git bash not giving the correct Windows path using pwd
.
Functionnal example
$cur_path = $pwd.Path
$container_id = docker run -it -d --volume $cur_path\:/matmuttools saagie/python:3.5.2-1.3.1-centos
docker exec $container_id 'ls'
docker stop $container_id
docker rm $container_id
Gives the following output:
anaconda-post.log
bin
dev
etc
git-credential-manager-2.0.4.jar
home
lib
lib64
lost+found
matmuttools
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
Non functionnal example
However, when doing something more "complex", docker throws an error:
$cur_path = $pwd.Path
$container_id = docker run -it -d --volume $cur_path\:/matmuttools saagie/python:3.5.2-1.3.1-centos
docker exec $container_id 'ls /matmuttools'
docker stop $container_id
docker rm $container_id
Throws the following error:
OCI runtime exec failed: exec failed: container_linux.go:367: starting container process caused: exec: "ls /matmuttools": stat ls /matmuttools: no such file or directory: unknown
If I pass ls
without quotes and without more argument (just ls
), it runs in the container. If I pass ls without quotes and with arguments, it runs on the host.
Runs in the container:
docker exec $container_id ls
Runs on the host:
docker exec $container_id ls /
How do I properly send a command to execute to a docker container in powershell (or with CMD) ?