volume 이란
도커에서 제공하는 volume 기술은 컨테이너 애플리케이션에서 생성되고 사용되는 데이터를 유지 및 보존하기 위해 사용한다. 컨테이너가 삭제되어도 Volume은 독립적으로 운영되기 때문에 데이터를 유지한다.
도커 Volume 기술은 도커 호스트OS와 컨테이너에서 직접 접근이 가능하다.
일반적으로 컨테이너 내부와 데이터는 컨테이너 생명 주기와 연관되어 컨테이너 종료 시 삭제되지만 이를 지속적으로 보존하기 위한 방법으로 Volume 기술이 사용된다.
도커에는 3가지의 Volume 기술이 있다.
# Bind Mount
Bind mount 기법은 디렉토리 뿐만 아니라 파일도 mount 가능하다. 호스트 파일 시스템 절대경로 ":" 컨테이너 내부 경로"를 직접 mount하여 사용한다. 사전에 연결할 파일 또는 디렉토리를 사용자가 생성하면 해당 호스트 파일시스템의 소유자 권한으로 연결이 되고, 존재하지 않는 경루 자동 생성되지만 이 디렉토리 루트(root) 사용자가 소유가 된다.
시전 정의 없이 컨테이너 실행 시 자동 생성되고, 컨테이너 제거 시 Bind Mount가 자동으로 해제되지만 생성된 호스트 디렉토리와 데이터는 보존된다.
ubuntu@docker:~$ docker run … -v /my-host:/app …
ubuntu@docker:~$ docker run … —mount type=bind, source=${PWD}/my-data, target=/var/log
같은 공간이지만 이름이 다르다. 컨테이너에서 app 디렉토리를 넣으면 /my app에 들어간다. 만약 app 컨테이너를 지우면 my host에는 app의 데이터가 있기 때문에 문제 없다. 새롭게 생성하고 다시 mount를 시키면 아까 들어있던 내용 그대로 사용할 수 있다. 즉, 데이터를 host의 지정된 디렉토리에서 관리한다. 호스트 파일 시스템 절대 경로 :/컨테이너 내부 경로 를 직접 연결(mount) 하여 사용한다.
# Volume
도커 권장하는 방법으로 docker volume create 볼룸명으로 볼륨을 생성한다. Docker 볼륨은 Docker 명령어와 Docker API를 통해 사용할 수 있다. docker volume 명령은 Docker root dir(/var/lib/docker) 영역에 volume 영역을 만들어 컨테이너 내부 경로와 연결하고 공유하고, 볼륨 드라이버(vieux/sshfs plugin)를 통해 원격 호스트 및 클라우드 환경에 볼륨 내용을 저장하고 암호화가 가능하다.
docker volume create <볼륨명>
ubuntu@docker:~$ docker volume create my-volume
ubuntu@docker:~$ docker run .... -v my-volume:/app ....
ubuntu@docker:~$ docker run .... --mount source=my-volume,target=/app ....
# tmpfs mount
tmpfs 방식은 Docker HostOS의 Memory에서만 지속되고 해당 컨테이너가 중지되면 tmpfs mount 연결 해제와 함께 기록된 데이터도 사라진다. 이 방식에서는 컨테이너 간의 공유 설정이 되지 않고, Linux 기반 Docker에서만 지원된다. 주로 임시로 사용하고 기록되지 않아야 되는 파일, 데이터 등을 사용할 경우에 유용하다.
ubuntu@docker:~$ docker run .... -tmpfs /var/www/html ....
ubuntu@docker:~$ docker run --mount type=tmpfs,destination=/var/www/html
'OS > Docker' 카테고리의 다른 글
[Docker] Proxy vs Reverse Proxy 차이 (0) | 2024.10.21 |
---|---|
[Docker] Volume - Bind mount 실습 (0) | 2024.10.21 |
[Docker] Nginx Container reverse proxy (0) | 2024.10.14 |
[Docker] - Nginx를 활용한 프록시 구성 (0) | 2024.10.14 |
[Docker] - Container Proxy (0) | 2024.10.14 |