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

도커 컨테이너와 호스트 간에 데이터를 공유하기 위해 볼륨을 설정하는 방법은 여러 가지가 있습니다. 이번 포스트에서는 Python을 이용하여 도커 컨테이너와 호스트 간에 데이터 볼륨을 설정하는 방법을 알아보도록 하겠습니다.

먼저, docker-py라이브러리를 사용하여 도커 API를 제어할 수 있는 Python 코드를 작성하겠습니다.

import docker

client = docker.from_env()

# 호스트와 컨테이너 사이의 데이터 볼륨 생성
def create_volume(volume_name, mount_point):
    volumes = client.volumes.list()
    for volume in volumes:
        if volume.name == volume_name:
            break
    else:
        client.volumes.create(volume_name)
    
    return client.containers.run('ubuntu', f'mkdir -p {mount_point}', volumes={volume_name: {'bind': mount_point}})

# 호스트와 컨테이너 간의 데이터 전송
def transfer_data(volume_name, file_path, mount_point):
    container = client.containers.run('ubuntu', 'echo "Hello, Docker!" > /data/hello.txt', volumes={volume_name: {'bind': mount_point}})
    container.commit()
    container.stop()

    client.containers.run('ubuntu', f'cat {mount_point}/{file_path}', volumes={volume_name: {'bind': mount_point}})

# 데이터 볼륨 삭제
def delete_volume(volume_name):
    volumes = client.volumes.list()
    for volume in volumes:
        if volume.name == volume_name:
            volume.remove()
            break

# 예제 실행
volume_name = 'my_volume'
mount_point = '/data'
file_path = 'hello.txt'

create_volume(volume_name, mount_point)
transfer_data(volume_name, file_path, mount_point)
delete_volume(volume_name)

위의 코드는 도커 ubuntu 컨테이너를 이용하여 호스트와 컨테이너 간의 데이터 볼륨을 생성하고, 데이터를 전송하는 예제입니다.

먼저, create_volume 함수에서는 docker-py를 사용하여 볼륨을 생성합니다. 이미 볼륨이 존재하는 경우에는 생성하지 않습니다. 이후 컨테이너를 실행하면서 생성한 볼륨을 마운트합니다.

다음으로, transfer_data 함수에서는 호스트의 파일을 컨테이너로 전송하는 예제입니다. echo를 이용하여 파일을 생성하고, cat으로 해당 파일을 읽어옵니다.

마지막으로, delete_volume 함수에서는 생성한 볼륨을 삭제합니다.

위의 예제 코드를 실행하면 동작을 확인할 수 있습니다. 도커 컨테이너와 호스트 간의 데이터 볼륨을 설정하는 방법에 대해 알아봤습니다. 도커를 활용하여 애플리케이션을 개발, 배포, 관리할 때 데이터의 영속성과 백업 등을 고려하여 신중하게 데이터 볼륨을 설정하는 것이 중요합니다.