>  기사  >  운영 및 유지보수  >  도커 볼륨과 마운트의 차이점은 무엇입니까

도커 볼륨과 마운트의 차이점은 무엇입니까

WBOY
WBOY원래의
2022-03-08 16:53:053105검색

"docker 볼륨"과 마운트의 차이점은 다음과 같습니다. "docker 볼륨"은 선언적이며 "Docker Engine" 자체는 시스템의 특정 디렉터리를 차지하며 Docker는 기본적으로 점유된 경로 아래 볼륨에 경로를 할당합니다. Mounting은 마운트 지점으로 경로를 차지하지 않습니다.

도커 볼륨과 마운트의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: linux7.3 시스템, docker-1.13.1 버전, Dell G3 컴퓨터.

Docker 볼륨과 마운트의 차이점은 무엇인가요?

오랜 기간 동안 여러 컨테이너가 동일한 데이터 디렉터리에 대한 액세스를 공유해야 하거나 컨테이너의 데이터(예: 데이터베이스)를 유지해야 하는 경우 항상 마운트 디렉터리 형식(바인드 마운트)을 사용했으며, 호스트의 디렉터리를 컨테이너의 지정된 디렉터리에 마운트합니다. 이 방법은 문제를 해결할 수 있지만 이 방법에는 항상 몇 가지 단점이 있습니다. 서로 다른 서버는 실제 상황에 따라 디스크 마운트 디렉터리의 경로를 수정해야 합니다.

다른 운영 체제의 파일 및 디렉터리 권한이 혼란스럽고 화나게 만들까요?
  • 그리고 이러한 문제는 볼륨을 사용하여 해결할 수 있습니다. 먼저 바인드 마운트와 도커 볼륨을 비교한 다음 볼륨이 바인드 마운트 문제를 어떻게 해결하는지 살펴보겠습니다. 먼저 사진을 보겠습니다.

이 사진은 docker 문서에서 가져온 것입니다.

도커 볼륨과 마운트의 차이점은 무엇입니까이 사진은 바인드 마운트와 볼륨이 실제로 호스트의 파일 시스템을 사용하는 것을 보여줍니다. 차이점은 볼륨이 docker가 관리하는 디렉터리에 있다는 것입니다. 하위 디렉터리이므로 권한으로 인한 마운트 문제가 없으며, 디렉터리 경로는 docker 자체에서 관리되므로 서버마다 다른 경로를 지정할 필요가 없습니다(사실상). , 전부는 아닙니다. 아래에 설명하겠지만) 관심?). 다음으로 바인드 마운트와 볼륨의 다양한 용도를 살펴보겠습니다.
1. 컨테이너가 다른 서버에 배포되는 경우 실제 디스크 장착 디렉터리에 따라 경로를 수정해야 합니다.

예: Linux 시스템에서는 "/var/someDir"을 자주 사용합니다.

그러나 Mac에서는 /var/가 실제 디렉토리가 아닙니다. Mac 사용자는 Linux보다 더 발전된 디렉토리이며 사용자는 이를 필요로 하지 않습니다. Windows 시스템에서 Windows 사용자는 다음과 같이 질문할 것입니다. /var / 그게 무엇인가요? C 드라이브와 D 드라이브가 가장 합리적인 구분~~

다들 제일 잘생겼다고 누가 제일 잘생겼다

맥의 var 디렉토리는 소프트링크
2. 운영 시스템의 파일 및 디렉토리 권한 때문에 헷갈리고 화나시겠죠?
원래 Linux 시스템에서의 테스트는 매우 좋았으나, 결과적으로 Windows에서는 마운트 경로에 여러 가지 문제가 있었습니다. 여기에서 자세히 설명하지 마세요. 아니요 이러한 문제가 발생하면 시도해 볼 수 있습니다. 하지만 Mac에서는 더 좋습니다. 결국 Linux와 동일합니다.

Docker에는 마운트 방식 외에 데이터를 보관할 수 있는 Volume도 있습니다. 이렇게 얘기하기가 좀 쑥스럽네요. Docker를 오랫동안 사용해오면서 늘 Mount를 Volume으로 여겼는데, 그게 제 잘못은 아닙니다. Docker-compose 파일은 볼륨 섹션에 있습니다. 컨테이너와 호스트 마운트 경로 간의 매핑 관계를 작성하는 데는 문제가 없지만 이것은 항상 오해였습니다. . (엉뚱한 비난?)

사실 "마운트"와 "Docker 볼륨"은 동일한 것이 아닙니다. Docker Volume은 선언적이며 Docker 엔진 자체가 시스템에서 특정 디렉터리를 차지합니다. . , Linux는 일반적으로 "/var/lib/docker"이며 Mac 및 Windows에서 조정할 수 있습니다. 볼륨을 선언하면 Docker는 기본적으로 점유된 경로 아래의 볼륨에 경로를 할당합니다. 예:

Title

마운팅과 관련하여 볼륨은 Docker 엔진이 자체 "잔디"에서 할당한 경로입니다. 마운트 지점과 자신의 사이트에 대한 권한이 명확하게 정리되어 있어야 합니다. 따라서 위의 호스트 경로 마운트 문제가 해결되었습니다. ?
사용할 때 호스트 경로 이름 대신 볼륨 이름을 사용하세요. 위에서 "test_vol"이라는 볼륨을 생성했다고 가정해 보겠습니다.
  1. docker run -d -v "test_vol:/var/data" some_image, 따라서 컨테이너의 /var/data 디렉터리를 "test_vol"의 마운트 지점에 마운트합니다.
  2. docker-compose는 유사하지만 볼륨 선언이 필요합니다. docker-compose.yaml 파일에서 위의 예를 수정해 보겠습니다.

주의!!

  1. 이미지와 파일을 저장해야 하기 때문에 볼륨이 커지면 docker 디렉터리가 확장된다는 점에 유의해야 합니다. 볼륨을 저장하려면 시스템 디스크에 넣지 않고 도커 설치 디렉터리를 다른 더 큰 장착 디스크로 구성하는 것이 가장 좋습니다.
  2. 두 가지 동작은 다릅니다. 컨테이너 외부의 해당 디렉터리가 비어 있으면 볼륨은 먼저 컨테이너의 내용을 컨테이너 외부 디렉터리에 복사하고, 마운트는 컨테이너의 내부 디렉터리를 외부 디렉터리로 덮어씁니다! !
  3. 볼륨 바인드 마운트의 또 다른 단점은 nginx 컨테이너의 구성 파일인 nginx.conf를 마운트하는 등 파일을 직접 마운트할 수 없다는 것입니다.

여기서 주의할 점은 구성 파일과 같은 단일 파일 방식은 볼륨 사용에 적합하지 않다는 점입니다. 바인드 마운트도 해결할 수 있지만 구성 파일에는 데이터베이스 비밀번호와 같은 민감한 정보가 포함되어 있으므로 가장 좋은 방법은 다음과 같습니다. tmpfs를 사용하고 있습니다.

kubernetes의 볼륨도 비슷한 디자인을 반영합니다. subPath가 구성 파일 마운트 문제를 해결할 수 있지만 실제로 가장 좋은 방법은 configMap을 사용하는 것입니다.

추천 학습: "docker 비디오 튜토리얼"

위 내용은 도커 볼륨과 마운트의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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