Docker는 애플리케이션 생성, 배포 및 실행을 위한 매우 인기 있는 오픈 소스 도구입니다. 가상 머신과 비교하여 Docker는 더 가벼운 가상화를 제공하므로 Docker를 지원하는 모든 시스템에서 애플리케이션을 빠르게 배포하고 실행할 수 있습니다.
Docker에서 이미지는 애플리케이션을 실행하는 데 필요한 모든 종속성과 구성을 포함하는 실행 가능한 Docker 컨테이너입니다. Docker 컨테이너는 기존 이미지를 기반으로 구축할 수 있습니다. 이러한 구축 방법을 계층화된 구축이라고 합니다. 각 계층은 특정 구성이나 종속성을 나타냅니다.
Docker 컨테이너의 작동 원리는 데이터 구조의 트리 구조와 유사합니다. 각 이미지는 노드이며 레이어 간에는 부모-자식 관계가 형성됩니다. 이는 상위 이미지를 삭제하면 해당 하위 이미지를 사용할 수 없게 됩니까?
답은 그렇습니다. 하위 미러는 상위 이미지의 특정 구성이나 종속성에 의존하기 때문에 상위 이미지가 삭제되면 하위 미러가 제대로 작동하지 않습니다.
Docker 컨테이너의 각 레이어에 있는 파일 시스템은 읽기 전용이므로 Docker에서 이미지가 실행되면 컨테이너가 컨테이너 내부의 파일 시스템을 수정할 수 있도록 하는 읽기-쓰기 레이어가 생성됩니다. 컨테이너 내부에서 수정이 이루어지면 Docker는 결합 파일 시스템을 사용하여 읽기-쓰기 레이어와 이미지 레이어를 병합하므로 수정된 파일이 원본 이미지 레이어에 영향을 주지 않고 읽기-쓰기 레이어에서 업데이트됩니다.
컨테이너가 중지되고 삭제되면 해당 읽기-쓰기 레이어도 삭제되지만 미러 레이어는 삭제되지 않습니다. 따라서 이미지가 다른 이미지의 상위 이미지 역할을 하는 경우 해당 이미지 레이어가 항상 존재해야 합니다. 그렇지 않으면 하위 이미지를 사용할 수 없습니다.
그렇다면 미러를 삭제하고 싶지만 하위 미러의 사용에는 영향을 주지 않으려면 어떻게 해야 할까요? 여기에는 두 가지 해결 방법이 있습니다.
이미지가 다른 이미지에 종속적으로 빌드된 경우 Dockerfile에서 종속성 및 구성을 수정하여 상위 이미지를 해결할 수 없는 문제를 해결할 수 있습니다. Dockerfile 삭제 질문입니다. Dockerfile의 COPY 또는 ADD 지침을 사용하여 필요한 파일이나 디렉터리를 다른 이미지에서 가져오는 대신 이미지에 복사할 수 있습니다. 이렇게 하면 다른 이미지 빌드에 의존할 필요가 없으며 상위 이미지를 삭제해도 영향을 받지 않습니다.
미러가 다른 미러의 상위 미러로 사용되었지만 하위 미러의 사용에 영향을 주고 싶지 않은 경우 미러 내보내기 및 가져오기를 사용하여 문제를 해결할 수 있습니다. 문제. 먼저 이미지를 내보내야 합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!