소개
일반적으로 Docker 컨테이너는 특정 기간 – 명령어를 실행하는 데 걸리는 시간 동안만 실행됩니다. 컨테이너 내부에서 사용할 수 있는 데이터는 런타임 동안 컨테이너 내부에서만 액세스할 수 있습니다.
Docker 볼륨은 파일을 쉽게 액세스하고 더 오랜 기간 동안 저장하는 데 사용할 수 있습니다. 예를 들어, Nginx 웹 서버가 있고 감사를 위해 로그를 저장하려는 경우, Docker 볼륨을 사용하여 컨테이너의 로그를 호스트 머신에 저장할 수 있습니다.
이 튜토리얼에서는 Docker 컨테이너 내부와 호스트 머신 간에 데이터를 공유하는 방법을 배웁니다.
사전 요구 사항
이 튜토리얼을 진행하려면 다음과 같은 사전 요구 사항이 필요합니다:
- Ubuntu 18.04 서버: 다음의 유용한 튜토리얼을 따라 Ubuntu 18.04 이미지를 사용하여 새로운 CloudSigma 서버를 쉽게 생성할 수 있습니다.
- Docker – 다음 Ubuntu에 Docker를 설정하는 방법에 대한 튜토리얼을 사용하여 Docker를 설치하고 익숙해질 수 있습니다.
1단계 – 볼륨 바인드 마운트
다음 명령어를 사용하여 현재 사용자의 홈 디렉토리에 logs라는 이름의 디렉토리를 생성하고, 이를 /var/log/nginx에 바인드 마운트할 수 있습니다:
|
1 |
docker run --name=nginx -d -v ~/logs:/var/log/nginx -p 5000:80 nginx |
이 명령어에 대한 자세한 정보는 다음과 같습니다:
--name=nginx는 쉽게 참조할 수 있도록 컨테이너에 이름을 부여합니다.-d인수는 프로세스를 분리하여 백그라운드에서 실행합니다.-v hostPath:containerPath는 호스트 경로와 컨테이너 경로를 매핑하여 마운트를 바인드합니다.-p hostPort:containerPort인수는 컨테이너의 포트를 호스트 포트에 매핑합니다.nginx라인 끝에 있는 nginx는 컨테이너를 생성하는 데 사용해야 하는 이미지의 이름입니다.
2단계 – 호스트에서 데이터 액세스
이제 서버에서 Nginx 컨테이너가 실행 중이며, 서버의 5000 포트가 Nginx의 80 포트에 매핑됩니다. 웹 브라우저에서 다음 URL로 포트를 열 수 있습니다:
|
1 |
http://serverIP:5000/ |

~/logs 디렉토리에서 access.log 및 error.log 파일을 볼 수 있습니다. cat 명령어를 사용하여 로그를 확인할 수 있습니다:
|
1 |
cat access.log |
|
1 2 3 |
Output: xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://xx.xxx.xxx.xxx:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" |
또한 호스트 머신에서 로그 디렉토리인 ~/logs를 확인하고 Nginx의 로그 파일을 찾을 수 있습니다. 또한, logs 폴더를 변경하면 컨테이너의 /var/log/nginx 폴더에도 반영됩니다.
결론
이 튜토리얼에서는 Docker 컨테이너 내부와 호스트 머신 간에 데이터를 공유하는 방법을 배웠습니다. 이는 디버깅을 위해 로그 분석이 필수적인 개발 환경에서 매우 중요합니다.
Docker에 대한 더 많은 리소스는 저희 블로그에서 다음 내용을 확인할 수 있습니다:
- 퍼블릭 클라우드의 Ubuntu에서 Docker를 설치 & 운영하는 방법
- CentOS 7에 Docker 설치 및 설정하기
- Docker 리소스 정리하기 – 이미지, 컨테이너, 볼륨
- CloudSigma에서 Docker를 실행하는 방법 (CloudInit 포함) 업데이트됨
즐거운 컴퓨팅 되세요!
댓글
아직 댓글이 없습니다. 첫 번째로 작성해 보세요.