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

도커는 애플리케이션을 컨테이너로 패키징하고 실행하는 가상화 플랫폼입니다. 이를 통해 개발 환경을 일관되게 유지하고 애플리케이션을 쉽게 배포할 수 있습니다. 그러나 컨테이너는 일시적으로 생성되고 삭제되기 때문에 컨테이너 간 데이터를 공유하는 것은 복잡한 작업일 수 있습니다.

도커에서는 도커 볼륨(Docker Volume)을 사용하여 컨테이너와 호스트 간 데이터를 공유할 수 있습니다. 볼륨은 호스트 파일 시스템에 저장되며 여러 컨테이너에서 공유할 수 있습니다.

도커 볼륨 생성

도커 볼륨을 생성하는 가장 간단한 방법은 컨테이너를 실행할 때 -v 플래그를 사용하는 것입니다. 예를 들어, 다음 명령어를 사용하여 myvolume이라는 볼륨을 생성할 수 있습니다.

$ docker run -v myvolume:/app/data mycontainer

위의 명령어는 mycontainer라는 이름의 도커 이미지를 실행하고 myvolume:/app/data라는 볼륨을 해당 컨테이너에 연결합니다. 이제 컨테이너 내부의 /app/data 디렉토리는 호스트의 myvolume 볼륨과 공유됩니다.

볼륨 사용 예시 (Python)

파이썬 애플리케이션에서 도커 볼륨을 사용하는 방법을 알아보겠습니다. 예를 들어, 서버에서 업로드된 파일을 저장하는 간단한 웹 애플리케이션을 구현해보겠습니다.

import os
from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    
    if file:
        file.save(os.path.join('/app/data', file.filename))
        return 'File uploaded successfully'
    else:
        return 'No file provided'

if __name__ == '__main__':
    app.run()

위의 코드는 Flask를 사용하여 파일을 업로드하는 엔드포인트를 정의합니다. 업로드된 파일은 /app/data 디렉토리에 저장됩니다. 이 디렉토리는 도커 볼륨과 연결되어 있으므로, 호스트에서 해당 디렉토리에 접근하면 업로드된 파일을 확인할 수 있습니다.

도커 볼륨 관리

도커 볼륨은 강력하고 유연한 기능을 제공합니다. 여러분은 볼륨을 생성하고 관리하는 다양한 방법을 사용할 수 있습니다. 예를 들어, 볼륨 삭제, 볼륨 내 데이터 확인 등을 위해 도커 CLI를 사용할 수 있습니다.

$ docker volume rm myvolume

위의 명령어를 사용하면 myvolume이라는 도커 볼륨을 삭제할 수 있습니다. 볼륨 삭제 시 해당 볼륨에 저장된 데이터도 함께 삭제됩니다.

결론

도커 볼륨을 사용하여 도커 컨테이너와 호스트 간에 데이터를 공유하는 것은 간단하고 유연한 방법입니다. 볼륨을 사용하면 컨테이너를 생성하고 삭제할 때 데이터를 유지할 수 있으며, 여러 컨테이너에서 공유할 수도 있습니다. 이를 통해 개발 작업을 효율적이고 일관된 환경에서 수행할 수 있습니다.