2016-09-02 5 views
0

스토리지 용 볼륨을 사용하면 디스크 공간 사용에 어떤 영향을 미치는지 이해하는 데 어려움이 있습니다.계층화 된 파일 시스템 및 볼륨 마운트

나는 이미지가 기본 이미지이며 내 애플 리케이션이 필요로하는 많은 유틸리티가 함께 제공됩니다. 나는 기본 이미지 A로 구축 된 이미지 인 앱 B와 C를 사용합니다. 다른 두 언어로 앱을 실행합니다. 이미지 A는 300MB이고 B와 C는 각각 300MB입니다.

앱 A와 B의 인스턴스를 10 개 만들면 얼마나 많은 디스크 공간이 사용됩니까?

또한 NFS 공유를 모든 컨테이너에 탑재한다고 가정하면 컨테이너 내의 모든 응용 프로그램/프로세스는 응용 프로그램 데이터 만 기록하고 탑재 된 nfs 공유에 로그를 기록하므로 쓰기 작업이 컨테이너. 마운트 지점은/var/www/html입니다. 디스크 사용량은 어떻게됩니까?

현재로서는 첫 번째 경우에 내 디스크 사용량이 기본 이미지의 경우 300MB, 따라서 빌드 된 두 개의 앱 이미지의 경우 600MB이므로 900MB가됩니다. 기본 이미지가 공유 될 것으로 가정합니다. 앱 이미지 B와 C에서 생성 된 컨테이너는 모두 지워지기 전에 100MB의 데이터를 씁니다. 그러면 총 디스크 사용량은 900MB + 100MB가됩니다. 디스크의 순수 데이터 * 컨테이너 수 *

답변

2

계층화 된 파일 시스템은 부모 이미지의 레이어를 다시 사용하므로 이미지 A가 300MB이고 응용 프로그램 B와 C가 각각 300MB이면 사실상 해당 응용 프로그램 컨테이너에 거의 0 개의 디스크 공간이 추가됩니다. reusi 부모 이미지의 전체 내용. 모든 데이터가 외부 적으로 저장되고 컨테이너의 로컬 RW 파일 시스템에 쓰기가 없기 때문에 원하는만큼 스핀 업하고 300MB의 디스크 만 사용할 수 있습니다. 그 애플리케이션의 각 3백메가바이트을 추가하고, 그 300메가바이트는 부모와 다른 애플 리케이션 컨테이너와 다른 사실이 있다면

(고정 표시기가 같은 명령을 실행 한 경우 각 응용 프로그램 컨테이너가 다른에서 재사용 할 수있는 캐싱을 사용) , 각 이미지가 600MB로 표시되고, 실제 사용되는 디스크는 900MB, 부모는 300MB, 각 앱 이미지는 300MB가됩니다.

각 컨테이너 회전은 컨테이너가 로컬 볼륨이나 컨테이너의 RW 계층에 파일을 쓸 때까지 사용 된 디스크 공간을 추가하지 않습니다.

이해하면 계층화 된 파일 시스템 설계가됩니다. 이미지는 여러 개의 레이어로 구성 될 수 있습니다. 각 레이어는 한 번 만들어지며 다른 이미지에서 다시 사용할 수 있습니다. 해시에 대한 참조로 모든 것이 저장되며 해시에 대한 참조가 더 이상 없을 때만 도커가 docker rmi에서 해당 레이어를 삭제합니다. .

이미지를 컨테이너 (docker run 또는 심지어 docker create)로 변환하면 이미지 내용이 읽기 전용 레이어로 탑재되고 컨테이너의 RW 레이어가 맨 위에 장착되며 레이어 상단에 마운트 된 모든 볼륨 파일 시스템. 볼륨 외부의 읽기는 파일이있는 파일 (또는 파일의 다른 수정 사항)이 제거 될 때까지 레이어를 통과합니다. 따라서 파일을 수정하지 않으면 이미지 레이어 중 하나에서 읽습니다. 그러나 RW 레이어에 파일을 만들면 읽음이 다시 나타납니다. 이로 인해 컨테이너의 수명 동안 각 컨테이너가 자체적으로 변경 사항을 저장할 수있는 반면 이미지는 변경 불가능하다는 개념이 생깁니다. 컨테이너에 docker diff을 실행하면 RW 레이어가 변경되었습니다. 이 diff는 빌드의 각 단계에서 이미지 레이어에 저장하거나 docker commit에 저장합니다.

+0

감사합니다. 따라서 쓰기 용 네트워크 파일 서버를 사용하면 컴퓨터에서 컨테이너를 무제한으로 실행할 수 있습니까? – Jonathan

+0

각 프로세스마다 무제한 메모리가있는 한 무제한. 파일 핸들과 네트워크 주소 공간에 대한 이론적 인 한계가있을 수 있지만 도달하기 전에 메모리 또는 CPU 용량이 부족합니다. – BMitch

+0

너무 좋았습니다 :-). 감사. 앱 A와 B는 서로 다른 이미지이므로 별도로 900MB가됩니다. – Jonathan

관련 문제