ETC/Docker

내가 이해한 Volume이란?

Raconer 2023. 8. 3. 16:01
728x90

Volume이란?

컨테이너 종료시 모든 환경 및 데이터가 삭제 되므로 이를 방지 하기 위해 사용한다.

장단점

장점

  • 데이터 영속성
    • Volume을 사용하면 컨테이너가 종료되더라도 데이터가 영구적으로 보존됩니다.
    • 따라서 데이터베이스나 파일과 같이 중요한 데이터를 영구적으로 저장해야 하는 경우에 유용합니다.
  • 데이터 공유
    • Volume은 여러 컨테이너가 동일한 데이터를 공유할 수 있도록 해줍니다.
    • 여러 컨테이너가 동일한 데이터를 읽고 쓸 수 있어서 데이터를 쉽게 공유할 수 있습니다.
  • 데이터 백업과 복구
    • Volume을 사용하면 데이터를 백업하고, 필요에 따라 데이터를 복구하는데 편리합니다.
    • 컨테이너를 업데이트하거나 재생성해도 데이터를 손실하지 않고 복구할 수 있습니다.
  • 성능 향상
    • Volume을 사용하면 컨테이너의 파일 시스템을 사용하는 것보다 성능이 향상될 수 있습니다.
    • 특히 데이터베이스와 같이 많은 I/O 작업이 필요한 경우에 유용합니다.

단점

  • 복잡성
    • Volume을 사용하면 컨테이너를 실행할 때 Volume을 설정해야 하므로 약간의 복잡성이 있을 수 있습니다.
  • Volume 관리
    • Volume을 사용하면 데이터가 호스트 머신의 파일 시스템에 저장되므로, Volume의 크기와 관리가 필요합니다.
    • 따라서 호스트 머신의 디스크 공간을 고려해야 합니다.
  • 설정 오류
    • Volume을 설정하는 과정에서 올바르지 않은 설정을 하거나 경로를 잘못 지정하는 등의 오류가 발생할 수 있습니다.
  • 보안 고려사항
    • Volume을 사용하면 컨테이너와 호스트 머신 간에 데이터가 공유되므로 보안에 주의해야 합니다.
    • 중요한 데이터를 저장할 때는 적절한 보안 조치를 취해야 합니다.

내가 이해한 Volume

Volume은 사용자 컴퓨터 Path와 Docker 내부 Path를 맵핑하여 Container에 특정 폴더를 공유 하는 것

위와 같이 생각 했을 때 궁금증이 몇가지 생겼다.

  1. 사용자 Path를 매핑하는 건데 왜 Volume을 만드는 것일까?

Volume은 Container와 별개의 위치에 폴더를 공유하는 것에 의의를 두지만 일반적인 개념 처럼 가상의 Volume Path를 만들어서 Container 데이터를 Container 종료 후에도 유지 할수 있다.

그래서 Mysql 실행 시 자동으로 Volume이 생성되는데 이는 가상의 Docker > Path에 자동으로 생성되므로 Container가 종료 시 Volume도 같이 삭제된다.

Mysql실행시 생성된 Volume은 바로 사라지지만 Volume을 생성하고 연결하면 Containe종료시에도 삭제 되지 않고 계속해서 사용할수 있다.
MacOS에서는 도 커 실행 시 VM으로 가상으로 생성되기 때문에 사용자 컴퓨터에서 접근할 수 있는 방법이 없다.
그래서 컨테이너를 추가해서 특정 path에 볼륨을 연결 후 Container에서 확인해야 한다.

이마저도 Docker Dashboard에서 확인할 수 있다.

  1. 사용자 컴퓨터에 공유된 Path를 왜 찾지 못하는 것인가?

위에서 설명했듯이 맥북에서는 VM으로 로커가 실행되므로 포스트 컴퓨터에 접근하기 힘들다

  1. 그러면 호스트 컴퓨터에 만들려면 어떻게 해야 하는가?

컨테이너 실행 시 -v /사용자 컴퓨터 Path:/var/lib/mysql 사용

결론

뭔가 생각 보다 확실한 궁금증 해결은 되지 않았다

하지만 볼륨은 콘테이너와 특정(사용자 컴퓨터, 도커 파일 위치) 등에 연결 하는 행위가 중요 하며 사용자 컴퓨터에 연결시(Mount) 볼륨 리스트에 없더라도 당황하지 말고 가상 볼륨이 없을 뿐이지 볼륨이라는 행위는 동작 되고 있다고 생각을 한다.

볼륨은 2가지 종류가 있는거 같다.

  1. 사용자 컴퓨터에 직접 맵핑 하는 Volume
    • Volume 리스트에 미출력
    • Mysql 실행시 schema.sql, data.sql 등 특정 파일을 맵핑 해서 사용 가능
  2. Docker Volume Create한 Volume
    • Volume 리스트에 출력
    • 일반적인 개념 Volume에 저장된 데이터는 삭제 되지 않는다.
      • -v Mysql-volume:/var/lib/mysql 으로 적용하면 DB 내용을 계속해서 유지 하며 사용 할수 있다.
728x90

'ETC > Docker' 카테고리의 다른 글

Docker Network 기본 사용법 과 Tip  (0) 2023.08.09
Docker Network  (0) 2023.08.09
Mysql 설정 및 기본 명령어  (0) 2023.08.03
Docker Swarm과 Kubernetes(K8s) 비교  (0) 2023.07.26
Docker 기본 명령어  (0) 2023.07.26