2014-06-19 8 views
1

도커 허브에서 우분투 기본 이미지를 다운로드했습니다. 이제 우분투 이미지를 기반으로 새로운 이미지를 만들려고합니다. 그러나 우분투 이미지의 기본 명령을 "/ bin/sh"대신 "/ bin/bash -c"로 지정하면 Dockerfile에서 RUN을 사용할 때 sh 대신 bash에 액세스합니다. 유의할 것은 동일한 이미지의 기본 명령이 아니라 빌드하려고하는 이미지가 아니라는 것입니다.기본 도커 이미지의 기본 명령 변경

+0

당신은 구축 할 필요가 도커 파일을 사용하여 자신의 컨테이너. ENTRYPOINT 및 CMD 지시문을 참조하십시오. https://docs.docker.com/reference/builder –

+0

이미 수행했습니다. 안녕하세요 나는이 이미지를 구축하고 실행할 때 다음 명령 고정 표시기는 에코 ubuntu2 실행 그러나 - 나는 우분투 엔트리 포인트 [ "C" "/ 빈/bash는"] 우분투 의 엔트리 포인트를 변경하는 매우 간단한 Docerfile이 아무 것도 표시하지 않습니다. 이것을 더 조사하십시오. echo hi는 문자열로 전달되지 않습니다. 대신 'echo hi'를 넣으면 작동합니다! – Keeto

답변

2

ubuntu 이미지에 기본 명령이 있다고 생각하지 않습니다. 실행하면

$ docker run ubuntu echo hi 
hi 

["/bin/echo", "hi"]으로 실행됩니다. 당신은

$ docker run ubuntu set 
2014/06/20 08:38:54 exec: "set": executable file not found in $PATH 

set가 내장되어 쉘 명령을 실행하여 다음을 확인 할 수 있지만, 고정 표시기는 외부 하나를 실행하려고합니다.

기본 쉘을 대시에서 bash로 변경하려면 고정 된 심볼릭 링크를 사용하여 이미지를 만들 수 있습니다. 여기 dockerfile는 다음과 같습니다

FROM ubuntu 
RUN ln -sf /bin/bash /bin/sh 

[편집]

난 그냥 당신이 무슨 말을하는지 깨달았다. 당신이 RUN 명령에 대한 기본값을 변경할 수 있습니다 나도 몰라,하지만 당신은 명시 적으로이 같은/빈/bash는 사용할 수 있습니다

RUN /bin/bash -c ... 
+1

'RUN ln -sf/bin/bash/bin/sh' 이것은 끔찍한 생각입니다. 우분투는/bin/sh를 대상으로합니다. 대시 (dash)는 배시 (bash)보다 훨씬 빠르게 실행되는 완전한 posix 쉘입니다./bin/sh를 bash에 연결하면 서버의 성능이 크게 저하됩니다. 인용 : https://wiki.ubuntu.com/DashAsBinSh – xero

+0

@xero, 이것은 도커 컨테이너 안에 있습니다. 일반적으로 컨테이너의/etc에있는 스크립트를 실행하지 않으므로 많은 영향을 미치지 않을 것이라고 생각합니다. – ivant

0

당신은 사용할 수 있습니다

RUN ["/bin/bash", "-c", "<command>"]

관련 문제