[도커] 도커 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: 도커 컨테이너 상세 조회 명령어 모음  (2) 2024.11.19
[도커] 도커 8: 도커 이미지 심화  (0) 2024.11.18
[도커] 도커 5: docker 파일 2 (Dockerfile) - 도커 명령어  (3) 2024.11.15
[도커] 도커 4: docker 파일 1 (Dockerfile)  (5) 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바