-
Docker) Docker Volume 실습해보기Cloud/Docker 2022. 10. 4. 21:19
실습 환경 : AWS console (2022/10), Visual Studio Code
실습 목적 : Docker Volume의 사용 방법에 대해 알아보고 실습해본다.
Docker Volume
- Docker는 Union File System을 사용한다.
하나의 이미지로부터 여러 container를 만들수 있는 방법을 제공한다. - 제공하는 서비스의 로직과 데이터는 반드시 분리되어야한다, application에서 발생한 여러가지 데이터에 영향을 주지않고 언제든 다른 container로 이전할수 있게 하여 운영자가 데이터를 안전하게 관리하고 운영할 수 있다.
- Docker Volume은 container에서 생성, 재사용할 수 있고 host운영체제에서 직접전근 가능하다.
- 보존되어야 하는 데이터를 유지하기 위한 매커니즘을 제공한다.
- container내부 데이터는 container의 lifecyclel과 연관되어 있어(container 종료시 삭제된다.) Docker Volume을사용하여 Volume을 독립적으로 운영하는것이 좋다.
Docker Volume 종류
- volume
- docker에서 권장하는 Docker Volume으로 docker 명령으로 관리된다.
- volume 드라이버를 통해 원격 호스트 및 클라우드 환경에 volume 내용을 저장하고 암호화 가능하다.
- 새 volume으로 지정될 영역에 데이터를 미리 채우고 container에 연결하면 데이터를 바로 사용 가능하다.
- bind mount
- host의 file system 절대경로를 container에 직접 mount 한다.
- volume과 마찬가지로 file system 영역에 데이터를 채우고 container에 연결하여 데이터 사용 가능하다.
- 사용자가 파일/디렉토리를 생성하면 host의 file system 소유자 권한으로 연결된다.
- container가 제거되도 host 디렉토리는 유지된다.
- tmpfs mount
- tmpfs mount 방법은 임시적이며 host 메모리에서만 지속되므로 container가 중지되면 tempf mount가 제거되고 내부에 기록된 내용은 삭제된다.
- host 또는 container는 Upperdir(읽기/쓰기영역)에서 지속사용가능하지 않는 임시 저장용도 사용시 유용하다.
- tmpfs mount는 container실행시 지정하고 container 제거시 자동 해제된다.
Volume 실습해보기
Volume
(1) Volume 생성docker volume create my-share1
(2) Volume 목록 확인
docker volume ls
(3) Volume 상세 정보
docker volume inspect my-share1
(4) Volume 저장위치 확인
ls -lF /var/lib/docker/volumes
(5) Volume 에 파일 복사
sudo cp index.html /var/lib/docker/volumes/my-share1/_data
# 필요한 경우 생성된 volume에 원하는 파일을 복사한다.
(6) Volume을 container에 마운트하여 생성
docker run -dit --name server1 --mount source=my-share1,target=/mnt ubuntu:14.04
# --mount 옵션으로 volume을 마운트한다.
docker run -dit --name server2 -v my-share1:/mnt ubuntu:14.04
# -v 옵션으로 volume을 마운트한다.
# -v 옵션으로 volume을 마운트하면 inspect로 상세정보 확인시, .HostConfit.Binds 항목과 .Mounts
항목을 확인하면 mount된 volume의 정보를 확인할 수 있다.
# 위 두개의 컨테이너 생성 후, 같은 볼륨을 공유하는것을 확인한다.
(7) Volume 삭제
docker volume rm my-share1
# container에 mount된 상태에서 삭제는 불가능하다.
bind mount 실습해보기
bind mount
(1) 디렉토리 생성mkdir calc-web
# bind mount에 사용할 디렉토리 생성 및 필요한 파일을 복사한다.
(2) container 생성
docker run -dit --name server1 --mount type=bind,source="$(pwd)",target=/mnt ubuntu:14.04
# --mount 옵션으로 bind mount로 지정된 디렉토리를 마운트한다.
docker run -dit --name server2 -v "$(pwd)":/mnt ubuntu:14.04
# -v 옵션으로 bind mount로 지정된 디렉토리를 마운트한다.
(3) bind mount 확인
docker container inspect server2 -f "{{.HostConfig.Binds}}"
(4) bind mount 삭제
rm -rf calc-web
# bind mount 디렉토리를 삭제할때 아무런 주의없이 삭제되므로 주의해야한다.
'Cloud > Docker' 카테고리의 다른 글
Docker) Docker Network 알아보기 (0) 2022.10.05 Docker) Docker Volume Nginx container 실습해보기 (0) 2022.10.04 Docker) Dockerfile 실습해보기 (0) 2022.10.04 Docker) Docker Image 생성 실습해보기 (0) 2022.10.04 Docker) Docker Container JavaScript 실습해보기 (0) 2022.10.03 - Docker는 Union File System을 사용한다.