2016-10-20 5 views
1

사용 사례 : 멋진 도커 이미지를 시작했고 컨테이너가 약간의 놀음을 필요로합니다 (리서치를위한 구성 파일 변경). (sed 또는 vim ;-)을 사용하여 파일을 편집 한 다음 컨테이너를 중지하고 시작하려고합니다. 이제 구성에서 실수를했고 도커 컨테이너가 나타나지 않습니다. docker restart <my-container-id/-name> 구성 파일을 수정하여 실수를 수정하려면 어떻게해야합니까?다운/비 시작시 도커 컨테이너의 파일을 편집하는 방법

답변

2

jpetazzo (https://github.com/jpetazzo/nsenter/issues/27#issuecomment-53799568 참조)의 조언에 따라 원래 컨테이너의 '볼륨'을 사용하는 다른 컨테이너를 시작했습니다. 방법은 다음과 같습니다.

docker run --volumes-from <my-container-id/-name> -it busybox 

그러면 busybox 셸이 시작됩니다. 거기에는 구성 파일을 검사하고 수정하는 vi 및 다른 도구가 있습니다. 당신이 할 수있는

+0

이것은 최선의 해결책이지만, 파일이 작동하려면 내 보낸 볼륨에 있어야합니다 : 그리고 바로 그거야. 나는 이것이 OP를위한 경우인지 모른다. –

+0

수출 볼륨에 있어야 함을 알아두면 유용합니다. 나는 그랬다. 그러므로 그것은 간섭 문제로 오지 않았다. 이것이 우아한 해결책이지만, @ elton-stoneman의 대답은보다 견고한 해결책이 될 수 있습니다. – gkephorus

4

는 실행이 가능한지 여부에 관계없이 컨테이너에서에/파일을 복사 docker cp을 사용하며 볼륨 여부가 있는지 여부 :

> docker run --name temp alpine touch /file1.txt 
> docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 
> docker cp temp:/file1.txt . 
> ls 
file1.txt 
+0

항상 효과적인 답변입니다. 나는 어느 것을 골라야할지 의심 스럽다. 나는 그것이 항상 효과가 없을 때조차도 내가 찾은 해결책의 우아함을 좋아한다. 위의 투표를 통과하고 내 것을 받아들입니다. (예 : '영광';-)) – gkephorus

0

안녕하세요 그냥 컨테이너에서 이미지를 생성하고 그것을 시작 bash를 누른 다음 수정하십시오. 이제 컨테이너가 bash로 시작하므로 다시 커밋하고 이전 명령으로 실행해야합니다.

docker commit <containerid> 
docker images # to see the new imageid 
docker run -it <imageid> bash 
#Make the corrections and then exit bash 
docker commit <containerid> 
docker run <newimageid> formercommand 

감사

+0

이 방법은 효과가 있지만 컨테이너에서 제공되는 도구가 파일을 편집하는 데 제한적일 수 있습니다. 그러므로 나는 다른 대답들 중 하나를 생각할 것이다. – gkephorus