DevOps BootCamp/도커

두 개의 도커 이미지 다루기

cloudmaster 2023. 4. 12. 11:10

gangseyun@gangseyun-ui-MacBookAir docker % docker-compose up -d
[+] Running 2/2
 ✔ Container client  Started                                                                                  0.6s 
 ✔ Container server  Running                                                                               0.0s 

 

 > 두 개의 이미지를 컨테이너로 만들어 백그라운드에서 실행함

 

docker-compose down

 > 두 개의 이미지로 만든 컨테이너 종료

 

docker-compose up {특정 이미지}

 > 특정 이미지만 컨테이너로 실행

 

 

► 위의 명령어들은 docker-compose.yaml 파일을 기반으로 실행

 

 

 

> 볼륨(volume) 또는 논리 드라이브(logical drive)는 하나의 파일 시스템을 갖춘 하나의 접근 가능한 스토리지 영역

> 일반적으로(꼭 필수는 아니지만) 하드 디스크의 단일 파티션에 상주

 

파티션 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

 

볼륨과 파티션의 차이

 > 플로피 디스크는 파티션이 포함되어 있지 않음에도 볼륨으로 접근이 가능, 플로피 디스크는 현대의 대부분의 컴퓨터 소프트웨어를 가지고 파티셔닝이 불가능

 ✔︎ 플로피 디스크 : 컴퓨터의 보조 기억 장치의 일종, 넣고 빼면서 사용

 

볼륨 레이블, 볼륨 일련 번호

 > 볼륨 레이블 : 파일 시스템의 특정 볼륨에 주어지는 이름

 >  FAT 파일 시스템에서 볼륨 레이블은 전통적으로 11자로 제한

 > 파일 할당 테이블(File Allocation Table, FAT)은 디지털 카메라 등에 장착되는 대부분의 메모리 카드와 수많은 컴퓨터 시스템에 널리 쓰이는 컴퓨터 파일 시스템 구조

 >일반적으로 고유하며 사용자에 의해 일반적으로 변경되지 않음

 

도커 컨테이너 데이터 볼륨 관리

1. 데이터 볼륨

> 도커는 하나의 이미지로 부터 여러 컨테이너를 만들기 위해서 Union File system을 사용

> Union File system : 원본 이미지에 변경된 내용(diff)를 추가하는 방식

> 데이터를 다른 컨테이너와 공유 하거나 혹은 호스트에서 접근 할 수 있어야 하는 경우가 있는데, 이때 데이터 볼륨을 사용

> 호스트의 파일 시스템을 컨테이너에서 마운트 하는 방식으로 사용

>  AUFS와 Overlay 파일시스템 같은 유니온 파일 시스템은 (ext4같은)네이티브 파일시스템위에 올라가기 때문에 아무래도 성능이 저하

   > 데이터 볼륨 사용

 

2. 데이터 볼륨 추가

 > 도커 컨테이너를 만들 때(docker run), -v옵션을 이용해서 컨테이너에 데이터 볼륨을 추가 할 수 있다.

 

3. 호스트 디렉토리를 디렉토리로 설정

> 호스트의 특정 디렉토리를 컨테이너로 마운트

 docker run -i -t -v /src/web:/dst/web ubuntu /bin/bash

 /src/web을 컨테이너 디렉토리 /dst/web로 마운트 한다. 호스트 디렉토리와 컨테이너 디렉토리는 반드시 완전경로(full path)

 

docker run -i -t -v /src/web:/dst/web:ro ubuntu /bin/bash

 > 읽기 전용으로 마운트

 

4. 볼륨의 공유

컨테이너가 가지고 있는 볼륨을 다른 컨테이너와 공유 할 수도 있음

 > 도커에서 제공하는 네임드 데이터 볼륨 컨테이너(Named data volume container)를 이용해서 공유

  docker create -v /leesang --name leesang ubuntu /bin/true

 

 > 볼륨 컨테이너는 --volumes-from을 이용해서 공유

  docker run -it --volumes-from leesang ubuntu /bin/bash

 

6. 백업, 복구, 마이그레이션

 > docker run --volumes-from leesang -v /backup:/backup \
    ubuntu tar cvzf /backup/backup.tar.gz /leesang

  • --volumes-from 으로 leesang를 컨테이너에
  • 로컬의 /backup을 컨테이너의 /backup으로 마운트 한다.
  • tar 명령을 이용해서 /leesang 볼륨을 /backup/backup.tar.gz으로 백업한다.

> docker run --volumes-from leesang2 -v /backup:/backup ubuntu \
   tar xvzf /backup/backup.tar.gz

  • leesang2 볼륨으로 컨테이너를 실행한다. 복구한 파일의 정보는 leesang2 볼륨에 저장돼서 다른 컨테이너에서 사용 할 수 있다.
  • 로컬의 /backup을 컨테이너의 /backup으로 마운트 한다.
  • tar 명령을 이용해서 backup.tar.gz의 압축을 푼다.

 > docker run --volumes-from leesang2 -it ubuntu /bin/bash

  컨테이너 실행

 

7.1. 볼륨 만들기

 > docker volume create --name $name

 

7.2. 볼륨 목록 확인

docker volume ls volume_id

 : 명령으로 전체 볼륨 목록을 확인

 

7.3. 볼륨 삭제

docker volume rm volume_id

 : 명령으로 볼륨을 지울 수 있음

 

7.4. 볼륨 정보 확인

docker volume inspect volume_id

 : 볼륨의 상세 정보를 확인 

 

[출처]

 1. https://www.joinc.co.kr/w/man/12/docker/Guide/DataWithContainer#toc

 

도커 컨테이너 데이터 볼륨 관리

도커는 하나의 이미지로 부터 여러 컨테이너를 만들기 위해서 Union File system을 사용한다. 유니온 파일 시스템은 원본 이미지에 변경된 내용(diff)를 추가하는 방식이므로, 다른 컨테이너에서 사용

www.joinc.co.kr

'DevOps BootCamp > 도커' 카테고리의 다른 글

컨테이너 - 볼륨과 환경 변수  (1) 2023.04.13
도커 푸시하기  (0) 2023.04.13
왜 도커인가?  (0) 2023.04.11
도커 컨테이너 차트 시트  (0) 2023.04.10
도커 - 기본 원리  (0) 2023.04.08