이 문서는 도커 파일 계층화에 대한 관련 지식을 제공합니다. 이 문서는 도커 파일 계층화의 몇 가지 원칙을 설명하기 위해 도커 컨테이너 예제를 사용합니다.
docker Inspection [container-id] --format={{.GraphDriver}}
{map[LowerDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b-init/diff:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff MergedDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/merged UpperDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/diff WorkDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/work] overlay2}
주로 4가지 유형이 있습니다
이는 이 이미지를 기반으로 하는 모든 컨테이너가 동일한 파일 시스템, 즉 이미지 레이어를 가리킨다는 의미입니다.
이 레이어는 어디서 오는 걸까요? 우리가 사용하는 이미지를 살펴보겠습니다
이것은 하위 레이어와 상위 레이어를 결합하여 컨테이너에 최종 파일 시스템을 제공하는 다른 컨테이너입니다
다양한 컨테이너의 동작을 기록한 후 Lower 레이어의 비교를 통해 Merge 레이어를 생성할 수 있습니다
아직 깊이 이해되지 않았습니다
docker run -d alpine:latest
docker inspect alpine --format={{.GraphDriver}}
{map[MergedDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/merged UpperDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff WorkDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/work] overlay2}
UpperDir은 이미지의 상위 레이어입니다. 즉, 이 수준에서 수정할 수 있으며 이는 나중에 생성되는 컨테이너에 영향을 미칩니다.
docker inspect 9a118484ba --format={{.GraphDriver}}
{map[LowerDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14-init/diff:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff MergedDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/merged UpperDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/diff WorkDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/work] overlay2}
You 즉, 이미지의 상위 레이어에서 컨테이너에 대한 수정 사항이 상위 레이어에 반영되고 병합된 레이어가 구성되어 컨테이너에 표시됩니다.
명령줄을 사용하여 컨테이너 파일 시스템의 변경 사항을 확인할 수 있습니다
docker diff 9a118484ba
컨테이너를 작동하지 않았으므로 이 컨테이너와 이미지에는 차이가 없습니다
다른 컨테이너를 시작하고 300 동안 절전 모드로 둡니다. 그런 다음 컨테이너로 이동하여 일부 파일 정보를 수정합니다.
# docker exec -it ca91bb /bin/sh / # echo "helloWorld" > /tmp/hello.txt
컨테이너 파일 시스템의 변경 사항을 확인합니다.
docker diff ca91bbffb801 C /root C /root/.ash_history C /tmp A /tmp/hello.txt
파일 시스템에 대한 변경 사항이 기록된 것을 볼 수 있습니다.
이 내용은 실제로 디렉터리에 있습니다. of UpperDir
tree -L 1 diff/ diff/ ├── root └── tmp2 directories, 0 files
위의 실험을 통해 상위 레이어가 추가된 콘텐츠이고 하위 레이어와 병합되어 컨테이너의 변경 사항을 반영한다는 것을 알 수 있습니다. 그럼 상위 레이어를 직접 수정하여 컨테이너를 동작시킬 수 있을까요?
upper가 위치한 디렉토리에 데모 디렉토리를 추가하고 그 안의 파일을 터치합니다
# tree -L 2 ./ ./ ├── demo │ └── mytest.log ├── root └── tmp └── hello.txt
컨테이너에서 생성한 파일이 보이는지 볼까요
/demo # pwd /demo /demo # ls mytest.log
적용된 것을 볼 수 있으니 , 이 컨테이너를 초기화하려면 상위 레이어의 모든 내용을 직접 삭제할 수 있습니다.
소프트웨어 설치 추적 찾기
이전 프로젝트 과정에서 고객은 항상 에이전트 소프트웨어가 수정할 내용을 제공해달라고 요청했지만 고객에게 더 나은 방법을 찾지 못했습니다. , 이 도커 계층 파일의 응용 프로그램에서 에이전트를 컨테이너에 배포할 수 있으며 소프트웨어가 어떤 디렉터리와 파일을 수정하는지 한 눈에 명확하게 확인할 수 있습니다.
신속하게 컨테이너 복원
신속하게 컨테이너 파일 시스템과 상호작용
기본 파일 시스템이 손상되지 않도록 보호
호스트 공간 절약
권장 학습: "docker 비디오 튜토리얼 》
위 내용은 Docker 파일 계층화에 대한 심층 분석(상세 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!