docker run이있는 디렉토리로 CD를 넣을 수없는 이유는 무엇입니까?


39

특정 디렉토리에서 응용 프로그램을 실행해야합니다.

$ 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

그 디렉토리는 분명히 존재하며 bash를 대화식으로 실행하여 docker에 연결하면 위의 명령을 실행할 수 있습니다.

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

전체 경로를 지정하여 프로그램을 실행할 수 있지만 현재 디렉토리에서 시작될 것으로 예상되면 충돌합니다. 내가 무엇을 할 수 있을지?

답변:


34

다음과 같이 명령을 / bin / sh에 인수로 전달하십시오.

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

도커 실행 센 토스 / bin / sh -c 'cd / bin; / bin / ls '는 아무것도 인쇄하지 않지만 docker run centos / bin / sh -c'/ bin / ls / bin '은 작동합니다.
seanmcl

실제로 두 명령 모두 / bin 디렉토리의 파일 목록을 출력합니다. 둘 다 시도했다.
글루온

내 상자에 없습니다, centos7.
seanmcl

1
실제로, 내 명령 주위의 따옴표를 제거해도 제대로 작동합니다. /bin/sh -c어쨌든도 커가 그것을 감싸고 있다고 생각 합니다.
schmmd

85

-w옵션을 사용하여 작업 디렉토리를 변경할 수 있습니다 .

docker run

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

따라서 귀하의 경우 다음을 실행합니다.

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

-w와 함께 사용할 수 docker exec있습니까? 컨테이너에서 파이썬 스크립트를 실행하는 방법을 찾고 있지만 컨테이너 외부에서 중지 할 수는 없습니다.
zx1986

오, 나는 대답을 얻었다 ....flag provided but not defined: -w
zx1986 8:27에

1
왜 이것이 도커 런 참조 페이지 의 맨 아래에 숨어 있었습니까 ? :-)
Amir Abiri

5
이것은 정답
fferri

4

Dockerfile에서 WORKDIR을 사용하여 작업 디렉토리를 설정하십시오. 그런 다음 EXEC로 명령을 실행할 수 있습니다.


0

권한 문제로 인해 또는 인스턴스가 실행 가능한 사용 가능한 경로를 찾지 못할 수 있습니다. 이것을 확인하려면 실행 가능한 경로를 경로에 추가하고 스크립트를 실행하십시오.

경로에 현재 디렉토리를 추가하려면 아래 명령을 사용하십시오.

$ export PATH=$PATH:
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.