도커 볼륨

도커 볼륨

1. 도커 볼륨 (Docker Volume)

 - 도커 이미지로 컨테이너 생성 시, 읽기 전용으로 이미지가 생성

 - 이렇게 되면, 컨테이너를 삭제 시, 데이터도 같이 날라가게 됨

 - 이러한 문제점을 막기 위해 볼륨을 이용

    ※ 볼륨(Volume) : 컨테이너의 데이터 유지 한계를 극복하기 위해 로컬 PC에 컨테이너의 파일을 저장하는 공간

 - 이를 통해, 데이터를 보관하고 컨테이너간 파일 공유가 자유로움

 

2. 볼륨의 유형

 - 1) 익명 볼륨

    - 로컬 PC 어딘가에 저장

    - 컨테이너 종료와 함께 사라짐

    - 추후, 볼륨 병합 때 사용

 - 2) 네임드 볼륨

    - 로컬 PC 어딘가에 저장

    - 이름이 지정되어 따로 삭제하지 않으면, 유지됨

    - 추후, 다른 컨테이너에 붙일 수 있음

 

3. 익명 볼륨 사용하기

 - 컨테이너 생성 시, 익명 볼륨 설정

    - docker run --name=app1 -d -p 8031:80 --rm -v /usr/share/nginx/html nginx

        - ※ -v 옵션은 컨테이너의 /usr/share/nginx/html 폴더를 로컬 PC에 볼륨으로 만들겠다는 의미

 - 익명 볼륨 생성 확인

    - docker volume ls : 이름이 임의로 정해진 익명 볼륨 확인

 

 - 컨테이너 내부로 들어가 파일 수정하기

    - docker exec -it app1 bash : 컨테이너 쉘로 진입

    - cd /usr/share/nginx/html : 수정할 파일이 있는 폴더로 이동

    - apt-get install vim -y : vim 에디터 설치

    - vim index.html : 설치한 vim으로 index.html 내용 수정

 

    - 브라우저에서 수정된 내용 확인 (myserver:8031)

 

 - 컨테이너 종료 시, 볼륨이 사라지는 것 확인

    - docker stop app1

    - docker volume ls

 

 - 다시 익명 볼륨으로 컨테이너 생성 후, 파일 확인

    - docker run --name=app1 -d -p 8031:80 --rm -v /usr/share/nginx/html nginx

    - 브라우저가 초기화 된 것을 확인

 

 - 즉, 익명 볼륨으로는 컨테이너의 데이터 유지 불가능

 

4. 네임드 볼륨 사용하기

- 컨테이너 생성 시, 네임드 볼륨 설정

    - docker run --name=app1 -d -p 8031:80 --rm -v data:/usr/share/nginx/html nginx

        - -v 옵션으로 볼륨 설정할 때, 대상 폴더 앞에 볼륨명:을 붙임

 - 네임드 볼륨 생성 확인

    - docker volume ls : data로 이름 지어진 볼륨 확인 가능

 - 컨테이너 내부로 들어가 파일 수정하기

    - docker exec -it app1 bash : 컨테이너 쉘로 진입

    - cd /usr/share/nginx/html : 수정할 파일이 있는 폴더로 이동

    - apt-get update : 패키지 매니저 업데이트

    - apt-get install vim -y : vim 에디터 설치

    - vim index.html : 설치한 vim으로 index.html 내용 수정

    - 브라우저에서 수정된 내용 확인

 - 컨테이너 종료시에도 볼륨이 유지 되는 것을 확인

    - docker stop app1

    - docker volume ls

    - 컨테이너 제거 후에도 data 볼륨이 있는 것을 확인

 - 다시 네임드 볼륨으로 생성 후 파일 확인

    - docker run --name=app1 -d -p 8031:80 --rm -v data:/usr/share/nginx/html nginx

    - 브라우저로 변경사항이 계속 유지되는 것을 확인

'Back-End Study > Linux' 카테고리의 다른 글

컨테이너의 nginx 설정과 root 폴더 관리하기  (0) 2022.09.29
도커 마운트 볼륨  (0) 2022.09.29
도커 컨테이너 실행  (0) 2022.09.26
nginx 컨테이너 실행  (2) 2022.09.19
컨테이너 관련 명령어  (0) 2022.09.19