찾다
운영 및 유지보수DockerDocker 파일 계층화에 대한 심층 분석(상세 예시)

이 문서는 도커 파일 계층화에 대한 관련 지식을 제공합니다. 이 문서는 도커 파일 계층화의 몇 가지 원칙을 설명하기 위해 도커 컨테이너 예제를 사용합니다.

Docker 파일 계층화에 대한 심층 분석(상세 예시)

지식 준비

  • Docker는 실제로 Linux 커널의 일부 기능을 사용하여 리소스 격리를 달성하지만 파일 시스템은 리소스를 보다 효율적으로 만들기 위해 계층적 파일 시스템 구조를 사용합니다. 컨테이너의 파일 시스템을 구현합니다.
  • 개인적으로는 그 원리가 평행우주의 개념과 좀 비슷하다고 생각합니다. 어떤 사람들은 우리 우주에도 평행우주가 있다고 믿습니다. 즉, 우리가 내리는 다른 선택이 다른 우주를 분산시키고 계속해서 달려간다는 것입니다. 이 평행 우주 사이를 걸을 수 있습니다. 여기도 좀 비슷합니다.이미지를 패키징하고 docker run을 통해 실행하면 실제로는 이를 기반으로 컨테이너가 계속 실행되면서 컨테이너의 내용이 원본 이미지와 동일하게 됩니다. 사물에는 많은 편차와 차이점이 있으며 점차적으로 자신만의 우주를 형성하게 됩니다.

Docker 파일 시스템

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가지 유형이 있습니다

LowerDir

에서 각 컨테이너의 파일 시스템 계층화 상태를 확인할 수 있습니다.

이는 이 이미지를 기반으로 하는 모든 컨테이너가 동일한 파일 시스템, 즉 이미지 레이어를 가리킨다는 의미입니다.

이 레이어는 어디서 오는 걸까요? 우리가 사용하는 이미지를 살펴보겠습니다

MergedDir

이것은 하위 레이어와 상위 레이어를 결합하여 컨테이너에 최종 파일 시스템을 제공하는 다른 컨테이너입니다

UpperDir

다양한 컨테이너의 동작을 기록한 후 Lower 레이어의 비교를 통해 Merge 레이어를 생성할 수 있습니다

WorkDir

아직 깊이 이해되지 않았습니다

예제

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

    적용된 것을 볼 수 있으니 , 이 컨테이너를 초기화하려면 상위 레이어의 모든 내용을 직접 삭제할 수 있습니다.

Application

  • 소프트웨어 설치 추적 찾기

    이전 프로젝트 과정에서 고객은 항상 에이전트 소프트웨어가 수정할 내용을 제공해달라고 요청했지만 고객에게 더 나은 방법을 찾지 못했습니다. , 이 도커 계층 파일의 응용 프로그램에서 에이전트를 컨테이너에 배포할 수 있으며 소프트웨어가 어떤 디렉터리와 파일을 수정하는지 한 눈에 명확하게 확인할 수 있습니다.

  • 신속하게 컨테이너 복원

  • 신속하게 컨테이너 파일 시스템과 상호작용

  • 기본 파일 시스템이 손상되지 않도록 보호

  • 호스트 공간 절약

권장 학습: "docker 비디오 튜토리얼

위 내용은 Docker 파일 계층화에 대한 심층 분석(상세 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 CSDN에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Docker vs. Virtual Machines : 비교Docker vs. Virtual Machines : 비교May 09, 2025 am 12:19 AM

Docker와 Virtual Machine에는 고유 한 장점과 단점이 있으며 선택은 특정 요구에 기초해야합니다. 1. Docker는 가볍고 빠르며 마이크로 서비스 및 CI/CD, 빠른 시작 및 낮은 리소스 활용에 적합합니다. 2. 가상 머신은 높은 분리 및 다중 운영 시스템 지원을 제공하지만 많은 리소스와 느린 시작을 소비합니다.

Docker 's Architecture : 용기 및 이미지 이해Docker 's Architecture : 용기 및 이미지 이해May 08, 2025 am 12:17 AM

Docker Architecture의 핵심 개념은 컨테이너 및 거울입니다. 1. 거울은 응용 프로그램 및 종속성을 포함한 컨테이너의 청사진입니다. 2. 컨테이너는 이미지 인스턴스를 실행 중이며 이미지를 기반으로 작성됩니다. 3. 거울은 다중 읽기 전용 레이어로 구성되며 컨테이너가 실행 중일 때 쓰기 가능한 층이 추가됩니다. 4. Linux 네임 스페이스 및 제어 그룹을 통해 리소스 격리 및 관리를 구현합니다.

Docker의 힘 : 컨테이너화가 설명되었습니다Docker의 힘 : 컨테이너화가 설명되었습니다May 07, 2025 am 12:07 AM

Docker는 컨테이너화 기술을 통한 응용 프로그램의 건설, 배포 및 운영을 단순화합니다. 1) Docker는 컨테이너 기술을 사용하여 응용 프로그램 및 종속성을 패키지하여 환경 간 일관성을 보장하는 오픈 소스 플랫폼입니다. 2) 거울과 용기는 Docker의 핵심입니다. 미러는 응용 프로그램의 실행 파악 패키지이며 컨테이너는 이미지의 실행 된 인스턴스입니다. 3) Docker의 기본 사용은 Nginx 서버를 실행하는 것과 같으며 Advanced 사용법은 DockerCompose를 사용하여 멀티 컨테이너 응용 프로그램을 관리하는 것과 같습니다. 4) 일반적인 오류에는 이미지 다운로드 실패 및 컨테이너 스타트 업 실패가 포함되며 디버깅 기술은 로그보기 및 포트 점검이 포함됩니다. 5) 성능 최적화 및 모범 사례에는 미러 최적화, 자원 관리 및 보안 개선이 포함됩니다.

Kubernetes 및 Docker : 컨테이너화 된 앱을 배포하고 관리합니다Kubernetes 및 Docker : 컨테이너화 된 앱을 배포하고 관리합니다May 06, 2025 am 12:13 AM

Kubernetes 및 Docker를 사용하여 컨테이너화 된 애플리케이션을 배포하는 단계에는 다음이 포함됩니다. 1. Docker Image를 작성하고 Dockerfile을 사용하여 응용 프로그램 이미지를 정의하고 DockerHub로 누릅니다. 2. 응용 프로그램을 관리하고 노출시키기 위해 Kubernetes에서 배포 및 서비스를 작성하십시오. 3. HorizontalpodaUtoscaler를 사용하여 동적 스케일링을 달성하십시오. 4. Kubectl 명령을 통해 일반적인 문제를 디버그하십시오. 5. 성능을 최적화하고 리소스 제한 및 요청을 정의하며 Helm을 사용하여 구성을 관리합니다.

Docker : 컨테이너화 기술 소개Docker : 컨테이너화 기술 소개May 05, 2025 am 12:11 AM

Docker는 애플리케이션을 개발, 포장 및 실행하는 오픈 소스 플랫폼으로, 컨테이너화 기술을 통해 다양한 환경에서 응용 프로그램의 일관성을 해결합니다. 1. 이미지 구축 : Dockerfile을 통해 응용 프로그램 환경 및 종속성을 정의하고 DockerBuild 명령을 사용하여 빌드하십시오. 2. 컨테이너 실행 : DockErrun 명령을 사용하여 거울에서 컨테이너를 시작하십시오. 3. 컨테이너 관리 : Dockerps, Dockerstop, DockErrm 및 기타 명령을 통해 컨테이너 수명주기 관리.

Docker 및 Linux : 휴대용 응용 프로그램 구축Docker 및 Linux : 휴대용 응용 프로그램 구축May 03, 2025 am 12:17 AM

Docker 및 Linux로 휴대용 응용 프로그램을 구축하는 방법은 무엇입니까? 먼저 DockerFile을 사용하여 응용 프로그램을 컨테이너화 한 다음 Linux 환경에서 컨테이너를 관리하고 배포하십시오. 1) dockerfile을 작성하고 응용 프로그램과 그 종속성을 거울에 포장하십시오. 2) DockerBuild 및 Dockerrun 명령을 사용하여 Linux에 컨테이너를 빌드 및 실행하십시오. 3) DockerCompose를 통해 다중 윤곽 응용 프로그램을 관리하고 서비스 종속성을 정의합니다. 4) 이미지 크기 및 리소스 구성을 최적화하고 보안을 향상 시키며 애플리케이션 성능 및 휴대 성을 향상시킵니다.

Docker and Kubernetes : 컨테이너 오케스트레이션의 힘Docker and Kubernetes : 컨테이너 오케스트레이션의 힘May 02, 2025 am 12:06 AM

Docker와 Kubernetes는 컨테이너 오케스트레이션을 통해 응용 프로그램 배치 및 관리 효율성을 향상시킵니다. 1. Docker는 DockerFile을 통해 이미지를 빌드하고 컨테이너를 실행하여 응용 프로그램 일관성을 보장합니다. 2. Kubernetes는 POD, 배포 및 서비스를 통해 컨테이너를 관리하여 자동 배포 및 확장을 달성합니다.

Docker vs. Kubernetes : 주요 차이점과 시너지Docker vs. Kubernetes : 주요 차이점과 시너지May 01, 2025 am 12:09 AM

Docker와 Kubernetes는 컨테이너화 및 오케스트레이션의 리더입니다. Docker는 컨테이너 수명주기 관리에 중점을두고 소규모 프로젝트에 적합합니다. Kubernetes는 컨테이너 오케스트레이션에 능숙하며 대규모 생산 환경에 적합합니다. 이 둘의 조합은 개발 및 배포 효율성을 향상시킬 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.