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

도커 컨테이너는 가상화된 환경에서 애플리케이션을 실행하는 데 사용되는 강력한 도구입니다. 하지만 도커 컨테이너는 기본적으로 격리된 파일 시스템을 가지고 있기 때문에 호스트와의 데이터 공유가 어려울 수 있습니다. 이러한 문제를 해결하기 위해 도커에서는 데이터 볼륨을 설정할 수 있는 기능을 제공하고 있습니다.

데이터 볼륨이란?

데이터 볼륨은 도커 컨테이너와 호스트 사이에서 데이터를 공유하기 위해 사용되는 디렉토리 또는 파일입니다. 데이터 볼륨을 설정하면 컨테이너 내부에서 수정된 파일이 호스트에서도 동일하게 업데이트됩니다. 데이터 볼륨을 사용하면 애플리케이션에서 생성된 데이터를 영속적으로 보존하고 관리할 수 있습니다.

도커 컨테이너에 데이터 볼륨 설정하는 방법

도커에서는 -v 또는 --volume 옵션을 사용하여 데이터 볼륨을 설정할 수 있습니다. 다음은 도커 컨테이너에서 호스트의 특정 디렉토리와 데이터 볼륨을 설정하는 예제입니다.

$ docker run -v /host/directory:/container/directory my_image

위의 예제에서 /host/directory는 호스트 시스템의 디렉토리 경로를 의미하고 /container/directory는 컨테이너의 디렉토리 경로를 의미합니다. 이렇게 설정된 데이터 볼륨은 컨테이너 내부에서 /container/directory를 통해 접근할 수 있으며, 호스트에서도 해당 디렉토리에 접근하여 파일을 공유할 수 있습니다.

도커 볼륨 컨테이너 사용하기

도커 볼륨 컨테이너는 별도의 컨테이너를 데이터 볼륨으로 사용하는 기능입니다. 볼륨 컨테이너를 사용하여 데이터를 저장하고 다른 컨테이너들과 공유할 수 있습니다. 볼륨 컨테이너를 생성하려면 docker volume create 명령을 사용합니다.

$ docker volume create my_volume

위의 예제에서 my_volume은 새로운 볼륨 컨테이너를 생성하는 명령입니다. 이후 컨테이너에서 -v 옵션을 사용하여 볼륨 컨테이너를 마운트할 수 있습니다.

$ docker run -v my_volume:/app my_image

위의 예제에서 my_volume은 볼륨 컨테이너의 이름을 의미하고, /app은 컨테이너에서 접근 가능한 디렉토리 경로입니다.

파이썬에서 도커 데이터 볼륨 설정하기

파이썬에서는 docker-py 패키지를 사용하여 도커 컨테이너를 관리할 수 있습니다. 다음은 docker-py를 사용하여 도커 데이터 볼륨을 설정하는 예제입니다.

import docker

client = docker.from_env()

volumes = {
    '/host/directory': {
        'bind': '/container/directory',
        'mode': 'rw'
    }
}

container = client.containers.run(
    'my_image',
    volumes=volumes,
    detach=True
)

위의 예제에서 volumes 변수는 호스트 디렉토리와 컨테이너 디렉토리를 매핑하는 설정입니다. bind는 호스트에서의 디렉토리 경로를 의미하고, mode는 읽기 쓰기 권한을 설정합니다. 이후 client.containers.run 메서드를 사용하여 도커 컨테이너를 생성합니다.

도커 컨테이너에 데이터 볼륨을 설정함으로써 호스트와의 데이터 공유를 간편하게 할 수 있습니다. 이를 통해 애플리케이션에서 생성된 데이터를 영속적으로 관리하고 유연하게 활용할 수 있습니다.