목차

Docker Volume

  • 디렉토리와 파일을 mount 가능
  • “호스트파일 시스템 절대경로”:”컨테이너 내부경로” 를 직접 mount
  • 사전에 연결할 파일 또는 디렉토리의 권한대로 연결된다, 존재하지 않으면 root권한으로 생성된다
  • 사전정의 없이 컨테이너 실행 시 자동으로 생성되고, 컨테이너 제거시 Bind mount가 자동으로 헤제된다 이때 생성된 호스트 디렉토리 데이터(file)는 보존된다
  • Bind monun 방법은 데이터를 Host의 지정된 디렉토리에서 관리한다.
docker run  .. -v /my-host:/app ..
docker run --mount type=bind,source${pwd}/mydata,target=/var/log ..
  • docker run .. -v /my-host:/app …
  • docker run –mount type=bind,source${pwd}/mydata,target=/var/log ..
  • Docker에서 권장하는 방법으로 “docker volume create 볼륨명”으로 볼륨을 생성한다.
  • Docker 볼륨은 Docker 명령어(CLI)와 Docker API통해 사용 할 수 있다.
  • docker volume 명령은 Docker root dir(/var/lib/docker) 영역에 volume 영역을 만들어 컨테이너 내부 경로와 연결(mount), 공유한다.
  • 볼륩 드라이버(vieus/sshfs plugin)를 통해 원격 호스트 및 클라우드 환경에 볼륨 내용을 저장하고 암호화가 가능하다
  • 새 볼륨으로 지정될 영역(directory)dp 데이터를 미리 채우고 컨테이너에 연결하면 컨테이너 내에서 바로 데이터 사용이 가능하다.
  • docker volume은 데이터를 Docker가 중앙에서 컨테이너와 공유영역을 관리한다.
docker volum create my-vol
docker run .. -v my-vol:/app ..
docker run .. --mount soruce=my-vol,target=/app ..
  • 암시적 docker volume(권장하지 않음)
    • -v “컨테이너 내부경로” 를 사용하여 mount 한다
    • Docker volume생성되는 경로에 해쉬값으로 생성(/var/lib/dockr/volumes/[해쉬값]/_data)된다
docker run .. -v /var/lib/mysql ..
  • Docker hostOS의 Memory에서만 지속되고, 해당 컨테이너가 중지되면 tmpfs mount 연결 해제와 함께 기록된 데이터도 사라진다.
  • 컨테이너간 공유 설정은 불가하며 Linux 기반 Docker에서만 지원된다.
  • 임시로 사용하고 기록되지 않아야 되는 파일, 데이터 등을 사용 할 경우에 유용하다.(host영역 및 컨테이너의 write영역에 파일이 기록되지 않음)
  • 호스프 파일 시스템에 별도의 ㅣ경로를 생성하지 않고, 컨테이너와 메모리에만 임시 생성되며 지속성을 갖지 않는다.
docker run .. -tmpfs /var/www/html ..
docker run .. --mount type=tmpfs,destination=/var/www/html ..