디지털 양피지/Docker2017. 6. 28. 13:23

컨테이너의 임시적 성격

비지니스 연속석 필요.


Docker 를 사용할 경우 고려해야 하는 2가지 스토리지 카테고리

- 컨테이너에 대한 스토리지 볼륨 관리

  . stateless 하게 스토리지를 구성해야 한다.

  . 컨테이너에 저장되는 파일과 구성을 host에 잘 정리해야 한다.

- 호스트 상의 Docker 스토리지 관리

  . /var/lib/docker 파일을 running 상태에서 유동적으로 확장/축소가 가능해야 한다. 

  . LVM 이 확장에 좋다.

  . 어는 host에서 동작해도 문제 없도록 volume을 구성해야 한다. ISIC, SAN 등 사용



1. 호스트의 볼륨 공유

호스트의 디렉터리나 파일 컨테이너에 공유: 이미지 생성 중에는 안되고 컨테이너를 실행 할 경우에만 호수트의 보륨을 컨테이너에 마운트 할 수 있다.

docker run 에 -v 옵션 사용

 1. -v <컨테이너 마운트 경로> (권장)

 2. -v <호스트 경로>: <컨테이너 마운트 경로>

 3. -v <호스트 경로>: <컨테이너 마운트 경로>:<읽기 쓰기 모드>

- centos 사용시 SELinux 사용을 대비한 z 옵션 사용도 알아놓자.



 - 권장하지 않는 사용법

 docker run -v /tmp/volume:/data -it ubuntu


- /tmp/volume 폴더가 생성된다.

- host의 파일을 수정하면 docker 안쪽도 같이 공유 된다.

- docker volume ls 했을때 잡히지 않는다. 관리하기 쉽지 않아 권장되지 않는다.

- docker rm -fv 로 volume까지 삭제 할 때도 volume이 안잡혀 있으므로 삭제 되지 않는다.



* 권장하는 방식

 docker run -v /data -it ubuntu /bin/bash




- 삭제시 docker rm -fv를 사용하여 컨테이너 삭제시 volume도 같이 삭제 한다.




* Docker 볼륨

Docker 파일시스템은 기본적으로, 임시적으로 데이터를 저장한다. 볼륨은 UFS의 일부가 아니며 호스트 파일 시스템 상의 일반적인 디렉터리나 파일로 존재. 볼륨을 사용하면, 컨테이너에서 수행한 쓰기 작업은 즉각적으로 커밋없이 스토리지에 영구적으로 반영된다.

볼륨 생성 방법

1. 호스트 디렉터리를 볼륨에 매칭 -> 이름없는 볼륨 생성:

2. 데이터 전용 컨테이너 생성 -> --volume-from 을 사용:

 - 컨테이넌간의 볼률을 공유하는 역활

 - 하나의 컨테이너가 볼륨을 생성하고 --volume-from을 사용하여 볼륨 사용

3. docker volume create 를 사용하여 명시적 볼률 사용:


1. 호스트 디렉터리를 볼륨에 매핑하는 이름없는 볼륨


2. 데이터 전용 컨테이너

-전용으로 사용할 volume을 만든다. docker를 하나 생성한다.


- volume inspect 를 통해 정보 확인


- container를 실행하고 inspect를 해보면 같은 폴더를 사용하는 것을 볼 수 있다.


- 다른 컨테이너가 연결되어 있으면 삭제 되지 않는다.


- 컨테이너가 모두 종료 되면 삭제 된다.


- docker rm 옵션만 사용하면 볼륨이 남아있게 된다.

-dangling 옵션을 삭제



* 명시적으로 volume을 create 해서 사용한다.




- 이렇게 생성된 볼륨은 docker rm -rf 로 삭제되지 않는다.

  : docker volume rm data 로 삭제

 - 없는 폴더는 만들어지고, 파일이 들어있는 폴더는 두개의 데이터가 머지되어 나타난다.


* Docker 호스트에 외부 스토리지 연결하기

Dcoker 는 /var/lib/docker 볼륨을 사용하여 모든 이미지와 컨테이너를 저장.

많은 이미지가 추가 될수록 이 볼륨 크기는 빠르게 증가하여 스토리지가 부족해질 수 있다.

확장 가능한 외부 볼륨을 /var/lib/docker 디렉토리에 마운트해 사용하는게 좋다. 


'디지털 양피지 > Docker' 카테고리의 다른 글

5. Docker Compose  (0) 2017.06.29
4. Docker 네트워킹  (0) 2017.06.28
4. 컨테이너 관리  (0) 2017.06.28
4. Dockerfile 실습  (0) 2017.06.28
3. 이미지 태그 관리와 Dockerfile  (0) 2017.06.27
Posted by 빨간 양말