>운영 및 유지보수 >Docker >docker 상위 이미지를 삭제할 수 없는 경우 해결 방법(2가지 방법)

docker 상위 이미지를 삭제할 수 없는 경우 해결 방법(2가지 방법)

PHPz
PHPz원래의
2023-04-18 15:21:11969검색

Docker는 애플리케이션 생성, 배포 및 실행을 위한 매우 인기 있는 오픈 소스 도구입니다. 가상 머신과 비교하여 Docker는 더 가벼운 가상화를 제공하므로 Docker를 지원하는 모든 시스템에서 애플리케이션을 빠르게 배포하고 실행할 수 있습니다.

Docker에서 이미지는 애플리케이션을 실행하는 데 필요한 모든 종속성과 구성을 포함하는 실행 가능한 Docker 컨테이너입니다. Docker 컨테이너는 기존 이미지를 기반으로 구축할 수 있습니다. 이러한 구축 방법을 계층화된 구축이라고 합니다. 각 계층은 특정 구성이나 종속성을 나타냅니다.

Docker 컨테이너의 작동 원리는 데이터 구조의 트리 구조와 유사합니다. 각 이미지는 노드이며 레이어 간에는 부모-자식 관계가 형성됩니다. 이는 상위 이미지를 삭제하면 해당 하위 이미지를 사용할 수 없게 됩니까?

답은 그렇습니다. 하위 미러는 상위 이미지의 특정 구성이나 종속성에 의존하기 때문에 상위 이미지가 삭제되면 하위 미러가 제대로 작동하지 않습니다.

Docker 컨테이너의 각 레이어에 있는 파일 시스템은 읽기 전용이므로 Docker에서 이미지가 실행되면 컨테이너가 컨테이너 내부의 파일 시스템을 수정할 수 있도록 하는 읽기-쓰기 레이어가 생성됩니다. 컨테이너 내부에서 수정이 이루어지면 Docker는 결합 파일 시스템을 사용하여 읽기-쓰기 레이어와 이미지 레이어를 병합하므로 수정된 파일이 원본 이미지 레이어에 영향을 주지 않고 읽기-쓰기 레이어에서 업데이트됩니다.

컨테이너가 중지되고 삭제되면 해당 읽기-쓰기 레이어도 삭제되지만 미러 레이어는 삭제되지 않습니다. 따라서 이미지가 다른 이미지의 상위 이미지 역할을 하는 경우 해당 이미지 레이어가 항상 존재해야 합니다. 그렇지 않으면 하위 이미지를 사용할 수 없습니다.

그렇다면 미러를 삭제하고 싶지만 하위 미러의 사용에는 영향을 주지 않으려면 어떻게 해야 할까요? 여기에는 두 가지 해결 방법이 있습니다.

  1. Dockerfile에서 종속성 및 구성을 수정합니다.

이미지가 다른 이미지에 종속적으로 빌드된 경우 Dockerfile에서 종속성 및 구성을 수정하여 상위 이미지를 해결할 수 없는 문제를 해결할 수 있습니다. Dockerfile 삭제 질문입니다. Dockerfile의 COPY 또는 ADD 지침을 사용하여 필요한 파일이나 디렉터리를 다른 이미지에서 가져오는 대신 이미지에 복사할 수 있습니다. 이렇게 하면 다른 이미지 빌드에 의존할 필요가 없으며 상위 이미지를 삭제해도 영향을 받지 않습니다.

  1. 미러 내보내기 및 가져오기 사용

미러가 다른 미러의 상위 미러로 사용되었지만 하위 미러의 사용에 영향을 주고 싶지 않은 경우 미러 내보내기 및 가져오기를 사용하여 문제를 해결할 수 있습니다. 문제. 먼저 이미지를 내보내야 합니다.

docker save <image-name>:<tag> > /path/to/save/image.tar

그런 다음 docker load 명령을 사용하여 이미지를 계속 사용할 수 있도록 다른 시스템에서 이미지를 가져올 수 있습니다.

docker load < /path/to/save/image.tar

이렇게 하면 필요할 때 사용할 수 있도록 이미지를 보관할 수 있습니다.

요약:

Docker에서는 이미지의 종속성이 매우 중요하며, 하위 이미지를 사용하려면 상위 이미지의 존재가 매우 중요합니다. 상위 이미지를 삭제하려면 해당 이미지가 다른 이미지에 미치는 영향을 고려해야 합니다. Docker 이미지를 빌드할 때 상위 이미지에 의존하지 않도록 COPY 또는 ADD 명령을 사용하여 필요한 파일이나 디렉터리를 이미지에 복사할 수 있습니다. 이미지를 마이그레이션해야 하는 경우 이미지 내보내기 및 가져오기 방법을 사용하여 다른 시스템에서 쉽게 사용할 수 있습니다.

위 내용은 docker 상위 이미지를 삭제할 수 없는 경우 해결 방법(2가지 방법)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.