Docker volume, bind mount

han·2022년 1월 18일
0

도커 컨테이너 내부에서 정의된 파일들은 컨테이너의 라이프사이클과 동일한 라이프사이클을 가지게 되므로, 컨테이너가 제거될 때 같이 사라지는 문제가 있다.
또한 여러개의 컨테이너가 하나의 저장공간에 접근해야하는 경우도 빈번하게 있으므로 컨테이너 외부에 공용 저장공간을 둘 필요가 있다.
이를 해결하는 방법 2가지가 volume과 bind mount다.

출처: https://docs.docker.com/storage/volumes/

volume

  • 도커가 관리하는 특정 공간(디렉토리)을 만들고 이를 컨테이너 내부 경로와 마운트한다.
  1. volume 생성
    • docker volume create {volume name}
  2. volume 조회
    • docker volume ls
    • docker volume inspect {volume name}
      - Mountpoint를 통해서 마운트 경로를 알 수 있다.
  3. volume mount
    • docker run -v {volume name}:{container 내부 경로} --name {container name} {image}
    • -v 옵션으로 생성한 volume과 container내부의 경로를 연결하였다.
  4. volume 삭제
    • docker volume rm {volume name}
    • 이때, 마운트가 되어있는 컨테이너가 있을 경우 삭제되지 않는다.
    • 컨테이너부터 삭제해준다.
    • docker rm -f {container name}

bind mount

  • 파일 시스템의 특정 경로를 곧장 도커 내부 경로와 마운트한다.
  1. docker run 시 {volume name} 대신 실제 경로로 바꿔주면 된다.
    • docker run -d -it --name {container name} -v "{path}":{container 내부 경로} {image}

volume vs bind mount

문서를 보면 일반적인 경우에 volume을 권장한다.
volume의 경우 docker에 의해 관리되므로, 백업, 이관, 보안 등 bind mount에 비해 관리가 용이하다.
자세한 내용은 다음 문서를 참고한다.
https://docs.docker.com/storage/volumes/

0개의 댓글