개발/docker

docker volume 사용하기

2어진 2021. 11. 2. 19:50

 컨테이너를 지울경우 그간 저장된 파일이 날아가는걸 막고, 여러 컨테이너에 각각 저장된 파일들을 합쳐주기 위해 볼륨을 사용.

 

1. 볼륨 생성하기

sudo docker volume create 볼륨명
sudo docker volume create appname_volume

 

2. 컨테이너와 볼륨 연결

# 컨테이너 생성
sudo docker create --name 컨테이너명 -p 외부포트:내부포트 -v 볼륨명:/경로/ 이미지명:태그명
sudo docker create --name node0 -p 30060:3006 -v app_volume:/app/ dockerId/imgName:test
sudo docker create --name node1 -p 30061:3006 -v app_volume:/app/ dockerId/imgName:test
sudo docker create --name node2 -p 30062:3006 -v app_volume:/app/ dockerId/imgName:test

# 컨테이너 실행
sudo docker start node0
sudo docker start node1
sudo docker start node2


### 혹은 


# 바로 실행
sudo docker run --name 컨테이너명 -p 외부포트:내부포트 -v 볼륨명:/경로/ 이미지명:태그명
sudo docker run --name node0 -p 30060:3006 -v app_volume:/app/ dockerId/imgName:test
sudo docker run --name node0 -p 30061:3006 -v app_volume:/app/ dockerId/imgName:test
sudo docker run --name node0 -p 30062:3006 -v app_volume:/app/ dockerId/imgName:test

        

 

3. 확인

#### 테스트용 파일 생성

# 컨테이너 접속
sudo docker exec -it 컨테이너명 /bin/bash
sudo docker exec -it node0 /bin/bash

# 테스트용 디렉토리 생성
mkdir testDir

# 접속 끊기
exit


## 혹은
#로컬 폴더 컨테이너로 복사
sudo docker cp 로컬파일경로 컨테이너명:파일경로
sudo docker cp ./testDir node0:/app/



# 하나의 볼륨을 같이 사용중인 다른 컨테이너 접속
sudo docker exec -it node1 /bin/bash

#테스트용 디렉토리 생성여부 확인
ls

        node0 컨테이너에 생성/복사한 디렉토리가 node1, node2 에도 생성되어 있는걸 확인할 수 있다.