Por que não consigo fazer o cd para um diretório com o docker executado?

29

Eu preciso executar um aplicativo de um diretório 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

Esse diretório definitivamente existe, e se eu me conectar ao docker executando bash interativamente, posso executar o comando acima.

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

Eu posso rodar meu programa especificando o caminho completo, mas ele trava quando espera ser lançado do diretório atual. O que posso fazer?

    
por schmmd 09.10.2014 / 23:34

4 respostas

29

Passe seu comando como um argumento para / bin / sh assim:

sudo docker run -P ubuntu/decomposer /bin/sh -c 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'
    
por 10.10.2014 / 00:01
62

Você pode usar a opção -w para alterar seu diretório de trabalho.

docker run

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

Então, no seu caso, você executaria:

sudo docker run -w /local/deploy/decomposer -P ubuntu/decomposer ./decomposer-4-15-2014
    
por 09.12.2014 / 21:01
3

Use o WORKDIR no Dockerfile para definir o diretório de trabalho. Então você pode executar seu comando com EXEC.

    
por 10.10.2014 / 05:34
0

Isso pode ser devido ao problema de permissão ou a instância não consegue encontrar o caminho disponível do executável. Para verificar isso, tente adicionar o local disponível do executável no caminho e tente executar o script

para adicionar o diretório atual no caminho, use o comando abaixo

$ export PATH=$PATH:
    
por 09.10.2014 / 23:50