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

하지만 도커 컨테이너는 기본적으로 격리된 환경이기 때문에 호스트와의 데이터 공유가 제한적입니다. 이를 해결하기 위해서는 호스트와 컨테이너 간에 데이터 볼륨 설정을 해주어야 합니다. 이번 포스트에서는 파이썬을 사용하여 도커 컨테이너와 호스트 간 데이터 볼륨을 설정하는 방법을 알아보겠습니다.

1. 데이터 볼륨 생성하기

먼저, 호스트와 컨테이너 간에 공유할 데이터 볼륨을 생성해야 합니다. 이를 위해서는 호스트의 디렉토리를 공유할 디렉토리로 지정하고, 해당 디렉토리에 데이터를 저장할 수 있는 권한을 부여해야 합니다. 아래의 예제 코드를 참고하여 데이터 볼륨을 생성해보겠습니다.

import os

host_directory = '/path/to/host/directory'
container_directory = '/path/to/container/directory'

if not os.path.exists(host_directory):
    os.makedirs(host_directory)

os.chmod(host_directory, 0o777)

2. 도커 컨테이너 실행하기

이제 데이터 볼륨을 생성한 뒤, 도커 컨테이너를 실행할 때 데이터 볼륨을 설정해야 합니다. 이를 위해서는 -v 옵션을 사용하여 호스트의 디렉토리와 컨테이너의 디렉토리를 매핑합니다. 아래의 예제 코드를 참고하여 데이터 볼륨을 설정해보겠습니다.

import docker

host_directory = '/path/to/host/directory'
container_directory = '/path/to/container/directory'

client = docker.from_env()
container = client.containers.run('image_name', detach=True, volumes={host_directory: {'bind': container_directory, 'mode': 'rw'}})

위의 예제 코드에서 image_name은 사용할 도커 이미지의 이름입니다. 이렇게 컨테이너를 실행하면 호스트와 컨테이너 간에 데이터 볼륨이 공유되어 데이터를 주고받을 수 있습니다.

3. 데이터 볼륨 사용하기

이제 데이터 볼륨이 설정된 도커 컨테이너에서 데이터를 읽고 쓸 수 있습니다. 아래의 예제 코드를 참고하여 파이썬 스크립트에서 데이터 볼륨을 사용해보겠습니다.

container_directory = '/path/to/container/directory'

with open(container_directory + '/data.txt', 'w') as file:
    file.write('Hello, Docker!')

with open(container_directory + '/data.txt', 'r') as file:
    data = file.read()

print(data)  # Output: Hello, Docker!

위의 예제 코드에서는 데이터 볼륨에 data.txt 파일을 생성하고 내용을 작성한 뒤, 다시 읽어와 출력하는 예제입니다. 데이터 볼륨을 사용하면 컨테이너 안에서 생성한 파일이 호스트의 디렉토리에도 반영되는 것을 확인할 수 있습니다.

이렇게 도커 컨테이너와 호스트 간에 데이터 볼륨을 설정하여 데이터를 공유할 수 있습니다. 데이터 볼륨을 사용하면 애플리케이션의 데이터를 유지하면서 컨테이너를 업데이트하거나 재시작하는 등의 작업을 용이하게 할 수 있습니다.