개요
2023.07.12 - [Docker] Volume에서 컨테이너에서 사용한 데이터를 유지하기 위한 방법 중 하나인 Volume에 대해서 알아보았다. 이 글에서는 다른 방법 중 하나인 Bind Mount에 대해서 정리한다.
Bind Mount
Docker 프로세스가 관리하는 호스트 경로를 저장 공간으로 사용하는 Volume과 다르게, Bind mount는 호스트에 저장된 임의의 파일 또는 경로를 컨테이너에 마운트 하여 사용할 수 있다.
파일이나 경로는 호스트 시스템에서 절대 경로로 참조된다. 만약 호스트에 존재하지 않는 파일이나 경로를 마운트 시도하는 경우, Docker에 의해 자동으로 생성된다.
Bind Mount 하여 컨테이너 실행
Volume을 사용하는 것과 동일하게 --mount, -v 옵션으로 마운트 할 수 있다.
# --mount
docker run -d \
-it \
--name <CONTAINER_NAME> \
--mount type=bind,source=</PATH/OF/HOST>,target=</MOUNT/PATH> \
<IMAGE_NAME>:<TAG>
# -v
docker run -d \
-it \
--name <CONTAINER_NAME> \
-v </PATH/OF/HOST>:</MOUNT/PATH> \
nginx:latest
## 예시
docker run -d \
-it \
--name devtest \
-v /home/airflow/airflow:/app \
nginx:latest
docker inspect 명령어로 컨테이너 정보를 확인하면 Mount 항목에서 bind 타입으로 마운트 된 저장 공간의 정보를 확인할 수 있다.
docker inspect <CONTAINER_NAME>
실제로 마운트한 호스트의 경로와 컨테이너 내 경로에 저장된 데이터가 동일한 모습을 확인할 수 있다.
참고 문서
https://docs.docker.com/storage/bind-mounts/