Docker Container Volume 옵션 사용하여 Symbolic 링크와 동일한 기능 적용하기

따봉도관절

·

2024. 6. 1. 18:55

도커 컨테이너 생성 시 볼륨 옵션을 사용하면 Host OS의 경로와 컨테이너 내부의 경로를 서로 공유할 수 있게 된다. 그럼 컨테이너 내부에서 생성된 파일을 Host OS에서 확인할 수 있고 반대로도 역시 가능하게 된다.

 

Tomcat 이미지 컨테이너에 Spring WAS를 배포하여 컨테이너 내부 디렉터리 경로에 생성되는 로그 파일을 Host OS에서 공유받고자 하는 경우를 예시로 들어보았다.

 

 

[STEP 1] Host OS에서 컨테이너 내부 디렉터리를 조회할 경로를 생성해 둔다.

 

# Host OS: /disk/api/logs
# Docker Container: /disk/api/logs

$ mkdir /disk/api/logs

 

 

 

[STEP 2] Host OS에서 컨테이너 내부에 생성될 로그 파일을 조회할 절대경로와 도커 컨테이너 내부에 로그 파일이 생성되는 절대경로를 설정해 준다. 아래와 같이  -v [호스트 OS절대경로:도커컨테이너절대경로] 옵션을 포함하여 컨테이너를 생성해 준다.

 

$ docker run -it -d --name [컨테이너명] -p [포트:포트] -v [호스트OS절대경로:도커컨테이너절대경로] [이미지]

$ docker run -it -d --name tomcat_test -p 39080:39080 -v /disk/api/logs:/disk/api/logs tomcat:9.0.50

 

 

[STEP 3] 도커 컨테이너 내부 볼륨 마운트 설정이 된 해당 경로에 test.txt 파일을 생성한다.

 

$ docker exec -it tomcat_test touch /disk/api/logs/test.txt

 

 

[STEP 4] Host OS에서 아래 명령어로 공유받을 경로 리스트 목록을 조회해 보면 test.txt 파일이 생성된 것을 확인할 수 있을 것이다.

$ ls /disk/api/logs

 

 

  • Volume 옵션을 여러 개 사용하여 다수의 경로를 설정할 수도 있다.
$ docker run -it -d --name [컨테이너명] -p [포트:포트] -v [호스트OS절대경로:도커컨테이너절대경로] -v [호스트OS절대경로2:도커컨테이너절대경로2] [이미지]
$ docker run -it -d --name tomcat_test -p 39080:39080 -v /disk/api/logs:/disk/api/logs -v /disk/api/upload:/disk/api/upload tomcat:9.0.50