이미지를 사용하는 실행중인 컨테이너의 볼륨을 더 이상 사용하지 않는 새로운 Docker 이미지를 만들려고합니다. Dockerfile이 아닌 docker-compose 파일을 사용하여 볼륨을 만들었습니다. 문제는 새로운 docker-compose.yml 파일을 통해 새 컨테이너를 시작할 때 여전히 볼륨이 매핑되어 있다는 것입니다. 나는 여전히이 볼륨과 그것을 사용하는 원래의 컨테이너/이미지를 유지할 필요가있다. 또한 가능하다면 동일한 도커 이미지를 계속 사용하거나 새 버전을 추가하거나 최신 버전을 추가하고 싶습니다. 저는 여기에 사용되는 단계는 다음과 같습니다Docker가 재사용 볼륨을 구성합니다.
기존 이미지의새로운 버전 :
docker commit <Image ID> newimage
없이 볼륨과 함께 새로운 고정 표시기-compose.yml 만들기 :
docker commit <image id> existingImage:new-version
는 현재 실행중인 컨테이너에서 새 이미지 만들기 도커를 정의하고 실행하고 다른 프로젝트 이름으로 작성하십시오.
docker-compose -p <new project name>
실행 중
docker run -d -p 8093:80 <img>:<version>
나는이 볼륨의 모든 조합을 실행할 때마다 상태에서 원래의 이미지에서 매핑됩니다 : 고정 표시기-작성하지 않고, 단지 고정 표시기 실행을 사용합니다. 그래서 내 질문은, 일단 내가 볼륨을 매핑했지만 더 이상 볼륨을 사용하고 싶지 않은 이미지에서 컨테이너를 만드는 것입니다.
편집 : 나는 시도했다 추가 일 :
- 정지 용기 제거 컨테이너를 다시 시작 고정 표시기, 실행 고정 표시기를 다시 구성한다. 불운.
편집 2 : 이미지를 통해 시작하기로 결정 . 기본 이미지를 사용하여 관련없는 이미지를 사용하는 업데이트 된 고정 점 작성 파일이있는 컨테이너를 시작했습니다. docker-compose -f up -d -> STILL을 실행해도 이미지에 매핑 된 볼륨이없고 이미지가없는 경우에도 동일한 볼륨이 매핑되며 현재 docker-compose.yml 파일은 파일을 매핑하지 않습니다. 그것은 도커가 프로젝트 용으로 매핑되는 볼륨을 캐시로 작성하는 것처럼 보입니다. 보인다 How to get docker-compose to always re-create containers from fresh images? 캐싱 이미지의 문제를 해결하지만 용기 docker-compose
에서 사용하는 용기와 함께 볼륨을 제거하려면 볼륨
이미지 빌드에'docker commit'을 사용하지 마십시오. 'Dockerfile'과'docker build'를 사용하십시오. – BMitch
왜 안 되니? 그건 정말로 내 질문에 답하지 않고 완전히 다른 대화의 일부가 될 수도 있습니다. –
유지 관리가 쉽지 않거나 쉽게 재현 할 수 없으므로 이미지가 삭제되거나 잘못된 것을 커밋하면 되돌릴 수 없습니다. 컨테이너를 서버를 설치할 때와 같은 방식으로 유지하려고 시도하는 것이 코드 냄새입니다. 질문에 대한 답변이 아니므로 여기에 의견이 나와 있습니다. – BMitch