[도커] 도커 7: 도커볼륨?(+ Dockerfile VOLUME)

2024. 11. 17. 21:03·클라우드/도커

지난시간에는 도커파일 중 ENV를 알아보고, 환경변수도 알아봤다!

 

이번 시간에는 

도커파일의 VOLUME을 알아보자!


호스트 파일 <-> 컨테이너 파일 전송

호스트, 컨테이너 간 파일 전송이 필요할 때가 있다.

 

예를 들어 

컨테이너의 로그 파일을 호스트 파일로 가져와 분석하는 경우가 있다!

 

 

🙋‍♀️ docker cp 명령어

docker cp [host파일] [container name]:[container경로]

host ➔ container

 

docker cp [container name]:[container경로][host파일]

container ➔ host


볼륨 마운트로 호스트 <-> 컨테이너 파일 공유

docker cp 명령어 말고도,

볼륨 마운트 방식으로 공유 가능하다!

 

🙋‍♀️볼륨

컴퓨터, USB 메모리, 하드디스크 등의 저장장치에서 스토리지의 한 영역

 

🙋‍♀️볼륨 마운트

컨테이너에 쌓이는 데이터는 컨테이너가 삭제될 때 같이 사라지는데,
컨테이너의 데이터를, 애플리케이션이 가동중인 컨테이너 내부에 저장하는 것이 아닌
외부(호스트 컴퓨터 혹은 도커 영역 내)에 저장함으로써 데이터의 영속성을 보장하는 개념

도커에서의 볼륨 마운트

🙋‍♀️1. 바인드 마운트

   - 사용자가 직접 관리하는 마운트 방식

   - 도커 엔진에서 관리하는 영역 뿐 아니라 호스트 컴퓨터 어디라도 마운트 가능

   - 사용자가 직접 파일 수정 가능 (호스트에 존재하는 기존의 파일 그대로 마운트하므로)

쉽게 말해서,

A 컨테이너의 파일 저장 위치 -> B 호스트 파일 시스템으로 변경한 개념으로

 

A를 수정해도 B가 수정되고,

B를 수정해도 A가 수정된다!

 

docker run의 -v 옵션

docker run -v (호스트_디렉토리_위치):(컨테이너_디렉토리_위치)​

  이 방법을 통해 호스트와 디렉토리를 공유하는 컨테이너를 생성가능하다!
 

docker cp VS docker run -v

$ docker run -dt -v  --name test_bind_mount -v ./study-docker:/home/docker ubuntu
$ docker exec -it test_bind_mount /bin/bash                 # 컨테이너에 진입
# ls /home/docker                                           # [컨테이너 내 명령어] /home/docker에 포함된 파일 확인
# cat /home/docker/hello.txt                                # [컨테이너 내 명령어] /home/docker 내 hello.txt파일 확인
이런 방식으로 구성되며

 

host에서 작성

 

도커 컨테이너에서 확인

이렇게 host에서 작성하면, 도커 컨테이너중

한 군데에서 수정하면 

다른 데에서도 수정사항이 똑같이 반영되는 것을 볼 수 있다.

 

 

🙋‍♀️2. 볼륨 마운트

   - 도커에서 관리해주는 마운트 방식

   - 사용자가 파일 위치를 신경 쓸 필요 없음

   - 도커 엔진이 관리하는 영역 내에서 마운트 가능

   - 기존의 파일이 직접 마운트되지 않고, 볼륨으로 생성되며 그것이 컨테이너에 마운트됨

$ docker volume create --name test_volume_mount
$ docker run -it --name test_ubuntu_mount -v test_volume_mount:/root/ ubuntu
# echo “hello” > /root/hello.txt     # [컨테이너 속 명령어] root위치에 hello.txt 파일 생성 (“hello”내용)
# exit				                 # [컨테이너 속 명령어] 컨테이너 나옴

이런 식으로 명령어를 주면,

 

다음 그림과 같은 구조로 생성이 된다!

이번 시간에는 

볼륨, 볼륨 마운트를 알아보았다!

 

다음 시간에는 도커 이미지에 대해 더 알아보자!

'클라우드 > 도커' 카테고리의 다른 글

[도커] 도커 9: 도커 컨테이너 상세 조회 명령어 모음  (1) 2024.11.19
[도커] 도커 8: 도커 이미지 심화  (0) 2024.11.18
[도커] 도커 5: docker 파일 2 (Dockerfile) - 도커 명령어  (2) 2024.11.15
[도커] 도커 4: docker 파일 1 (Dockerfile)  (3) 2024.11.14
[도커] 도커 3: docker 명령어 모음 2탄 (도커 이미지 관련 명령어)  (3) 2024.11.13
'클라우드/도커' 카테고리의 다른 글
  • [도커] 도커 9: 도커 컨테이너 상세 조회 명령어 모음
  • [도커] 도커 8: 도커 이미지 심화
  • [도커] 도커 5: docker 파일 2 (Dockerfile) - 도커 명령어
  • [도커] 도커 4: docker 파일 1 (Dockerfile)
KyuminKim
KyuminKim
컴퓨터공학과 학생의 이모저모 개발 일지 📝
  • KyuminKim
    이모저모
    KyuminKim
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • 프로젝트 (2)
        • first-blog (2)
      • 클라우드 (22)
        • 도커 (14)
        • 쿠버네티스 (5)
        • AWS (2)
      • 알고리즘 (5)
        • 코드트리 (0)
        • 프로그래머스 (5)
      • 백엔드 (8)
      • 프론트엔드 (2)
      • 보안 (3)
        • 드림핵 (2)
      • python (3)
      • 네트워크 (1)
      • 기타 (6)
        • 2025 프로펙트 부트캠프(1차) | 클라우드 엔.. (0)
        • OSSCA | 2024 오픈소스 컨트리뷰션 아카데.. (0)
        • WIK (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    urf8
    코딩테스트
    EC2
    docker
    cannot send an empty message
    apiserver-runtime
    amazonlinux
    recover_your_data
    코드트리
    DP
    도커
    2024 당근 테크 밋업
    파이썬
    character_set_server
    오블완
    characterencoding
    알고리즘
    쿠버네티스
    MySQL
    주간레포트
    탈퇴구현
    고랭
    코드트리조별과제
    진단평가
    자료구조
    인코딩
    도커파일
    DB
    코딩트리조별과제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
KyuminKim
[도커] 도커 7: 도커볼륨?(+ Dockerfile VOLUME)
상단으로

티스토리툴바