Por qué no puedo hacer un CD en un directorio con docker run?

Necesito ejecutar una aplicación desde un directorio específico.

$ sudo docker run -P ubuntu/decomposer 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'2014/10/09 21:30:03 exec: "cd /local/deploy/decomposer; ./decomposer-4-15-2014": stat cd /local/deploy/decomposer; ./decomposer-4-15-2014: no such file or directory

Ese directorio definitivamente existe, y si me conecto a docker ejecutando bash de forma interactiva, puedo ejecutar el comando anterior.

$ sudo docker run -i -t ubuntu/decomposer /bin/bash# cd /local/deploy/decomposer; ./decomposer-4-15-2014

Puedo ejecutar mi programa especificando la ruta completa, pero luego se bloquea ya que espera ser lanzado desde el directorio actual. Qué puedo hacer?

Puedes usar -w opción para cambiar el directorio de trabajo.

docker run  -w, --workdir=""           Working directory inside the container

Entonces, en tu caso, correrías:

sudo docker run -w /local/deploy/decomposer -P ubuntu/decomposer ./decomposer-4-15-2014

Pase su comando como argumento a /bin / sh de esta manera:

sudo docker run -P ubuntu/decomposer /bin/sh -c 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'

Use WORKDIR en su Dockerfile para establecer el directorio de trabajo. Luego puede ejecutar su comando con EXEC.

Esto podría deberse a un problema de permisos o a que la instancia no puede encontrar la ruta de acceso disponible para el ejecutable. Para verificar esto, intente agregar la ubicación disponible del ejecutable en path e intente ejecutar el script

para agregar el directorio actual en path, use el siguiente comando

$ export PATH=$PATH:

Tengo un ejemplo similar de este sitio web https://djangostars.com/blog/what-is-docker-and-how-to-use-it-with-python/#header13:

docker run -d --name "test-nginx" -p 8080:80 -v $(pwd):/usr/share/nginx/html:ro nginx:latest

Este comando no funciona en Git Bash y Windows.

La solución era usar cd en lugar de $(pwd):

docker run -d --name "test-nginx" -p 8080:80 -v cd:/usr/share/nginx/html:ro nginx:latest