호스트 볼륨
docker run -v /tmp/host:/tmp/container ubuntu
docker run 실행 시 -v 로 "내 호스트 경로:컨테이너 경로"를 지정해주면 해당 호스트의 특정 경로를 볼륨으로 사용한다.
즉, 호스트의 /tmp/host와 컨테이너의 /tmp/container가 공유 드라이브 설정이 되는 것이다.
docker ps -a
실행된 컨테이너는 위와 같이 확인할 수 있다.
실제로 호스트에 /tmp/host에 touch test로 파일을 만들어보고 아래의 명령어로 컨테이너를 들어가서 확인해보면 파일이 공유된 것을 확인할 수 있다.
docker exec -it hungry_feynman /bin/bash
-it : interactive mode의 약자로 상호작용 허용 옵션(-i는 표준 입력을 활성화하고, -t는 가상 터미널을 할당)
-d : detached mode의 약자로 백그라운드에서 실행하라는 옵션.
이 -it를 TTY라 부르는데
TTY란 Teletypewriter의 약자다. 이것의 전신은 Teleprinter다.
Teleprinter는 두명이 서로 자리에 앉아서 상호작용할 수 있는 모스부호식 타자기였다.
TTY는 모스부호에서 알파벳으로 진화한 것을 말하며 그리고 자리 앉아서 상주 할 필요없이 나중에 볼 수 있는 기능이 있다.
그러한 개념을 리눅스에서 도입했는데 보통은 사용자가 시스템과 상호 작용할 수 있는 가상 터미널을 의미한다.
리눅스에 tty를 입력해보면 사용 중인 터미널 디바이스를 보여준다.
볼륨 컨테이너
호스트의 파일 시스템과 별개로 컨테이너 간에 데이터를 공유하고자 할 때 볼륨 컨테이너를 사용한다.
docker run -v /tmp/host2 --name myvolumecontainer -it -d ubuntu
docker run --volumes-from myvolumecontainer --name myvolumecontainer2 -it -d ubuntu
myvolumecontainer 안에 /tmp/host2 경로를 볼륨으로 사용하고 그 경로를 그대로 myvolumecontainer2에서도 사용하는 것을 말한다.
도커 볼륨
가장 많이 사용하는 볼륨 관리 방법이다.
도커 볼륨 생성
docker volume create myvolume
도커 볼륨 리스트 확인
docker volume ls
도커 볼륨 상세 확인
docker volume inspect myvolume
도커 볼륨을 이용해 이미지 올리기
docker run -v myvolume:/data -it -d ubuntu
AWS EBS
AWS를 사용할 때 EBS를 이용해서 스토리지를 사용할 수 있다.
Docker 컨테이너에서 직접 -v를 통해 EBS를 연결하는 것은 EC2 인스턴스와 Docker 컨테이너 간의 권한 문제 및 관리 문제를 유발할 수 있다. 그래서 도커 볼륨이나 Docker Compose와 같은 Docker의 더 복잡한 볼륨 관리 도구를 사용하는 것이 더 효과적일 수 있다.
EBS를 통해 볼륨 생성
docker volume create --driver=local --opt type=none --opt device=/mnt/data --opt o=bind ebs-volume
—driver=local 로컬 파일 시스템 사용
--opt type=none: 볼륨의 유형을 지정하는 옵션으로, 여기서는 none으로 설정되어 있습니다. 이는 Docker가 자체적으로 관리하는 볼륨이 아닌 외부 디바이스나 디렉터리를 사용하겠다는 의미입니다.
--opt device=/mnt/data: 볼륨에 연결할 외부 디바이스 또는 디렉터리를 지정하는 옵션입니다. 여기서는 호스트의 /mnt/data 디렉터리를 사용하겠다는 것을 의미합니다.
--opt o=bind: 마운트 옵션으로, bind를 사용하여 호스트 디렉터리를 Docker 볼륨에 연결합니다.
만들어진 볼륨으로 이미지 실행
docker run -v ebs-volume:/ebs-data -d 이미지이름
'🐋 Docker' 카테고리의 다른 글
Dockerfile을 빠르게 배워보기 (0) | 2023.11.13 |
---|---|
[CI/CD] 스프링부트 + 깃헙 + 젠킨스 연동하면서 겪은 시행착오 (1) | 2022.09.23 |
도커(docker) + 톰캣(tomcat)으로 war 배포하기 (1) | 2020.02.07 |
윈도우에서 도커 사용 시 가상화 설정 (0) | 2020.02.07 |