2016-07-27 4 views

답변

0

변경 사항으로 다시 빌드 할 수 없으면 볼륨에 영구 데이터를 저장해야합니다.

https://docs.docker.com/engine/reference/commandline/commit/

컨테이너의 변경

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

그것에서 새 이미지를 만듭니다

변경 사항을 저장하려면, 그러나, 당신은 commit 사용할 수 있습니다 양철통 컨테이너의 파일 변경 또는 설정을 새 이미지로 커밋하는 데 유용합니다. 이렇게하면 대화 형 셸을 실행하거나 작동하는 데이터 집합을 다른 서버로 내보내 컨테이너를 디버깅 할 수 있습니다. 일반적으로 Dockerfiles를 사용하여 문서를 관리하고 유지 관리 할 수있는 방법으로 이미지를 관리하는 것이 좋습니다.Read more about valid image names and tags.

커밋 작업에는 컨테이너 내에 장착 된 볼륨에 포함 된 데이터가 포함되지 않습니다.

기본적으로 이미지가 커밋되는 동안 커밋되는 컨테이너와 해당 프로세스는 이 일시 중지됩니다. 이렇게하면 커밋을 만드는 과정에서 데이터가 손상 될 가능성이 줄어 듭니다.

+0

이렇게 할 수는 있지만 Docker에 대한 약간의 반 패턴입니다.Dockerfile (또는 필요한 경우 볼륨)에 최종 업데이트를 통합하는 것이 가장 이상적입니다. – ldg

+0

예,하지만 그는 이미지 자체가 아니라 컨테이너에만 반영합니다. – TheRimalaya

+0

afaik가 잘못되었습니다. – ldg

1

, 당신은 당신의 고정 표시기 이미지 myimage을 태그하면 예, 단지

FROM myimage

와 다른 Dockerfile를 시작하고 방법으로 추가 변경

+0

향후 수정되거나 태그가 추가 된 이미지 (예 : 액세스 가능한 저장소에 저장)를 사용할 수 있다고 가정합니다. Dockerfiles 또는 코드 repo를 통해 다시 만들 수 없기 때문에 효과가있을 수 있지만 꽤 취성있는 솔루션입니다. – ldg

3

이 후 모든 고정 표시기 빌드 작업을 넣어 당신이 묘사하는 것.

유일한 고려 사항은 레이어 종속성입니다. 당신이 cmd1을 변경하면 재 구축에만이 명령보다 cmd4을 변경하는 경우가 cmd1
에 대한 다를 수 있기 때문에이 있기 때문에

는 모든 층이 재건 될 것이다 Dockerfile

FROM something 
RUN cmd1 
RUN cmd2 
RUN cmd3 
RUN cmd4 

을 고려 다른 레이어에는 영향을주지 않습니다.

명령을 어떤 순서로 실행해야하는지 생각해보십시오. 어쩌면 명령문을 재정렬하여 명령을 향상시킬 수 있습니다.

관련 문제