본문 바로가기
기술 기록/Docker

도커_03) 컨테이너와 로컬 사이의 볼륨(폴더, 디렉터리) 공유

by Fola 2022. 3. 28.

도커_03) 컨테이너와 로컬 사이의 볼륨(폴더, 디렉터리) 공유, 연결

도커를 공부하면서 작성한 테스트 메모 내용을 블로그에 한 번 더 정리.

 

 

1. 정리

도커 명령어의 -v 옵션

-v [로컬저장소의 절대 경로]:[컨테이너 저장소의 절대 경로]

 

컨테이너와 로컬 디렉터리를 연결시킨다.

작동 방식은 로컬 디렉터리를 설정한 컨테이너에 마운트 하는 방식

 

따라서

컨테이너 내부에 디렉터리가 존재하지 않는다면 자동으로 생성되고

컨테이너 내부에 디렉터리가 존재한다면 로컬 디렉터리로 덮어 씌워진다. 

 

명령어의 로컬 디렉터리가 존재하지 않는다면 자동으로 생성

 

 

 

2. 예제

 

예제 1) 알파인 리눅스 볼륨 마운트 시도 (1)

(* alpine linux : 작은 용량과 최소한의 기능을 추구하는 리눅스. 이미지의 크기가 5.32MB로 매우 작다. )

 

$ docker run -i -t \
  --name alpine_volume \
  -v /Users/volumes/alpine_vol_01:/root/ \
  alpine

 

path

 - /Users/volumes/alpine_vol_01

 - /root/

 

결과 

 - 마운팅 된 볼륨에 리눅스 커맨드 명령어 로그 파일만 생성됨.
 - vi 으로 텍스트 파일을 만들어 봤으나 공유되지 않음.

 

 

 



예제 2)  알파인 리눅스 볼륨 마운트 시도 (2)

$ docker run -i -t \
  --name alpine_volume_02 \
  -v /Users/volumes/alpine_vol_02_home:/home \
  alpine


시도

 - alpine 리눅스 내의 home 폴더를 지정하여 공유 시도.

컨테이너 이름

 - alpine_volume_02
  
path

- /Users/volumes/alpine_vol_02_home
- /home

 

결과

 - 로컬 디렉터리와 컨테이너 디렉터리간 완전한 볼륨 공유 확인.

 - 리눅스 내에 /root 라는 디렉터리가 존재함을 확인.

        -> 이곳에 컨테이너 내부에서 사용한 명령어들이 로그로 남는다는 것을 알아냄.

 



예제 3) 두 개의 우분투 볼륨 마운트 시도

 

 $ docker run -i -t \
  --name ubuntu_vol_01 \
  -v /Users/volumes/ubuntu_home_share_vol:/share_vol \
  ubuntu

 $ docker run -i -t \
  --name ubuntu_vol_02 \
  -v /Users/volumes/ubuntu_home_share_vol:/share_vol \
  ubuntu


시도

 - /share_vol 디렉터리를 양쪽 우분투에서 공유할 수 있는지?
 - 컨테이너 생성 시 /share_vol 디렉터리가 자동으로 생성되는지?

컨테이너 이름 :

 - ubuntu_vol_01

 - ubuntu_vol_02

 

path

 - /Users/volumes/ubuntu_home_share_vol

 - /share_vol
   

결과

 - 디렉터리를 양쪽 컨테이너 모두에서 공유 가능 확인.

 - 컨테이너 생성 시 볼륨으로 지정한 디렉터리가 없다면 자동 생성 확인. 

비고

 - dockerhub ubuntu official image 에는 vi 나 vim 이 내장되어 있지 않음.

 - cat 명령어를 이용하여 파일을 생성하거나 읽어야 함. 혹은 apt-get 을 이용한 vi 설치.
 

 

 

 


테스트 종료 이후 모든 컨테이너 삭제

$ docker stop $(docker ps -q) 
$ docker rm $(docker ps -a -q)

댓글