[DOCKER] 컨테이너 스토리지 관리

2024. 10. 7. 16:50·DevOps/Docker

2024.09.16 - [DevOps/Docker] - [DOCKER] Docker 명령어 총정리

 

[DOCKER] Docker 명령어 총정리

2024.09.15 - [DevOps/Docker] - [DOCKER] Docker 아키텍처 [DOCKER] Docker 아키텍처2024.09.15 - [DevOps/Docker] - [DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리 [DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리클라

lsdiary.tistory.com

이전 포스팅에서 Docker에서 컨테이너를 관리하기 위한 명령어를 살펴봤다.

 

컨테이너 데이터 보존

 

  • Image Layer (Read Only Layer)
  • Container Layer(가변)

이 두 가지로 구분되는 Docker의 특성상 컨테이너를 삭제한다면 이때까지 작업했던 내용은 반영되지 않고, 영구 삭제 된다.

  • 그렇다면 이러한 컨테이너를 영구 보존하려면 어떻게 해야 할까?
  • 여러 개의 컨테이너가 데이터를 공유할 수 없나?
volume mount
- v [호스트 경로]:[컨테이너 마운트 경로]
- v [호스트 경로]:[컨테이너 마운트 경로]:[읽기 모드]

 

볼륨 마운트를 통해 영구 보존 및 공유가 가능하다.

 

직접 EC2에 접속해서 Docker로 접속해보자.

ssh -i [pem 키 파일] [사용자이름]@[Public IP 주소]

 

이전 포스팅에서 실험했던 nginx 컨테이너의 index.html 파일을 'docker cp' 명령어로 변경 하고, curl 명령어로 응답을 확인 했던 내용은, 컨테이너를 삭제하고 나면 다시 원래 상태로 돌아온다.

  • HOST에 컨테이너가 공유하는 영구적인 데이터 만들기 (관리자 권한이 필요함)

  • 컨테이너 실행 (Read/Write 레이어 생성) -> 볼륨 마운트
docker run --name web -d -v /webdata:/usr/share/nginx/html:ro nginx

> 읽기전용으로 마운트 시켜줌

 

> 성공

  • 컨테이너 삭제 이후 재실행

> 항상 호스트의 동일 디렉터리에서 데이터를 마운트하므로, 변하지 않는다.

  • 호스트의 디렉터리를 이용해서 다양한 컨테이너에서 사용 할 수 있다.

MySQL 컨테이너에서 만들어진 DB를 영구 보존

 

위 개념과 정반대로 컨테이너 내부의 폴더를 호스트 디렉터리로 마운트 시켜야한다.

docker run --name db -d -v dbdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=pass mysql:8

> :ro (read only)가 빠져있다. (역으로 마운트 하기 위해)

> docker가 관리하는 voulmes 디렉터리는 위 MySQL 실행 명령어에서 호스트의 디렉터리에 "/"를 붙이지 않으면 자동으로 volumes 디렉터리에서 관리하게 된다.

> 위 명령어를 실행하면 /volumes/dbdata 라는 디렉터리가 생성된다.

docker inspect db

> 볼륨 마운트에 대한 정보가 있다.

> "RW (Read/Write)" 가 가능하므로, 컨테이너 내부에서의 데이터와 호스트의 데이터 모두 동기화 된다.

> 컨테이너를 삭제한 이후에도 MySQL 컨테이너 내부의 데이터의 보존 확인

> 이후 MySQL을 볼륨 마운트로 다시 실행 시키면 데이터는 안정적으로 남아있다!


영구보존된 데이터 삭제

 

docker volume --help

> 볼륨 관리에 대해서 위와 같은 명령어로 볼륨 조작 명령어를 확인 할 수 있다.

  • docker volume ls : 볼륨들 전부 보여줌
  • docker volume prune : 사용하지 않는 모든 로컬 볼륨 삭제
  • docker volume rm : 특정 볼륨 삭제

 

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

[DOCKER] Docker 명령어 총정리  (2) 2024.09.16
[DOCKER] Docker 아키텍처  (0) 2024.09.15
[DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리  (2) 2024.09.15
'DevOps/Docker' 카테고리의 다른 글
  • [DOCKER] Docker 명령어 총정리
  • [DOCKER] Docker 아키텍처
  • [DOCKER] 도커 설치 및 컨테이너 개념과 동작 원리
Ls._.Rain
Ls._.Rain
안되면 될때까지 삽질했던 기록
  • Ls._.Rain
    Ls{Diary}
    Ls._.Rain
  • 전체
    오늘
    어제
    • 분류 전체보기 (136)
      • Github (2)
      • Spring (51)
        • Batch Programming (13)
        • 결제 (4)
        • 대용량 트래픽 (32)
        • OpenAI (0)
        • Security (0)
        • WebSocket (0)
        • JPA (1)
      • Algorithm (67)
        • DFS (6)
        • BFS (6)
        • Dynamic Programming (10)
        • Brute Force (4)
        • Binary Search (6)
        • 구현, 시뮬레이션 (15)
        • Stack (1)
        • Greedy (4)
        • Priority_Queue (2)
        • Back Tracking (3)
        • Geometry (2)
        • SCC (1)
        • 투포인터 (4)
        • 최대유량 (1)
        • 정렬 (1)
      • OS (0)
      • DevOps (15)
        • AWS (11)
        • Docker (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • hELLO· Designed By정상우.v4.10.0
Ls._.Rain
[DOCKER] 컨테이너 스토리지 관리
상단으로

티스토리툴바