[파이썬] 도커 컨테이너와 호스트 간 데이터 볼륨 설정

도커 컨테이너는 빠르고 가볍게 애플리케이션을 개발, 배포 및 실행할 수 있는 기술입니다. 그러나 컨테이너에서 생성한 데이터는 기본적으로 컨테이너 안에 저장되며 컨테이너가 삭제되면 함께 소멸됩니다. 때로는 데이터를 컨테이너에서 호스트로 이동하거나 호스트와 컨테이너 간에 데이터를 공유해야 하는 경우가 있습니다. 이를 위해 도커는 컨테이너와 호스트 간에 데이터 볼륨을 설정할 수 있는 방법을 제공합니다.

호스트 디렉토리와 데이터 볼륨 연결하기

데이터 볼륨을 설정하기 위해 우선 호스트 디렉토리와 컨테이너 디렉토리를 연결해야 합니다. 이를 통해 호스트 디렉토리의 파일을 컨테이너 안에서 볼 수 있고, 컨테이너 안에서 생성된 파일은 호스트 디렉토리에서도 접근할 수 있습니다. 도커에서는 -v 또는 --volume 옵션을 사용하여 호스트 디렉토리와 컨테이너 디렉토리를 연결합니다. 아래는 도커 커맨드로 호스트 디렉토리와 컨테이너 디렉토리를 연결하는 예시입니다.

docker run -v /host/directory:/container/directory image_name

위 예시에서 /host/directory는 호스트 디렉토리의 경로를, /container/directory는 컨테이너 디렉토리의 경로를 의미합니다. image_name은 실행할 컨테이너의 이미지 이름입니다.

데이터 볼륨 설정 예시 (Python)

Python 애플리케이션을 도커 컨테이너 내에서 실행하는 경우, 데이터 볼륨 설정이 필요한 경우가 많습니다. 예를 들어 데이터베이스 파일이나 로그 파일과 같은 중요한 데이터를 호스트 디렉토리와 컨테이너 디렉토리 간에 공유해야 할 수 있습니다. 이러한 경우, 아래는 Python 애플리케이션의 데이터베이스 파일을 호스트 디렉토리와 컨테이너 디렉토리 간에 공유하는 예시 코드입니다.

import sqlite3

# 호스트 디렉토리와 컨테이너 디렉토리를 연결
# 호스트 디렉토리: /host/directory
# 컨테이너 디렉토리: /container/directory
conn = sqlite3.connect('/host/directory/database.db')

위 예시에서는 sqlite3 모듈을 사용하여 SQLite 데이터베이스 파일에 연결하는 코드입니다. connect 메서드의 인자로 /host/directory/database.db를 전달하면 호스트 디렉토리와 컨테이너 디렉토리가 연결되어 데이터베이스 파일을 공유할 수 있습니다. 실행 중인 컨테이너에서 데이터를 수정하면 호스트 디렉토리의 데이터베이스 파일도 동기화되므로 데이터 손실이 없습니다.

마치며

도커의 데이터 볼륨 설정을 통해 호스트와 컨테이너 간에 데이터를 공유하고 저장하는 것은 매우 유용합니다. 호스트 디렉토리와 컨테이너 디렉토리를 연결하면 중요한 데이터를 안전하게 보관하면서 컨테이너의 가볍고 효율적인 특성을 유지할 수 있습니다. 위 예시 코드를 참고하여 애플리케이션에서 데이터 볼륨 설정을 활용해 보세요!