[파이썬] 도커 컨테이너와 호스트 간 네트워크 설정

도커는 강력한 컨테이너 가상화 기술을 제공하여 애플리케이션의 배포와 관리를 쉽게 할 수 있도록 도와줍니다. 도커 컨테이너는 호스트 시스템과는 독립적으로 실행되는데, 이로 인해 네트워크 연결 설정이 필요할 수 있습니다. 이번 블로그 포스트에서는 도커 컨테이너와 호스트 간의 네트워크 설정에 대해 알아보겠습니다.

호스트 네트워크 설정

도커 컨테이너는 독립적인 네트워크 인터페이스를 가지고 있으며, 새로운 IP 주소를 할당받습니다. 기본적으로 컨테이너는 호스트 시스템과 분리되어 실행되기 때문에, 호스트 시스템과의 네트워크 통신은 기본적으로 허용되지 않습니다.

하지만 때로는 호스트 시스템과 컨테이너 간에 특정 포트를 공유해야 할 수도 있습니다. 이때 호스트 시스템의 특정 포트를 컨테이너로 전달하여 네트워크 통신을 가능하게 할 수 있습니다.

다음은 파이썬 Flask 애플리케이션을 실행하는 도커 컨테이너에서 호스트 시스템의 5000번 포트와 통신하는 예제입니다.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, Docker!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

위 예제에서 app.run() 함수의 host 파라미터를 ‘0.0.0.0’으로 설정하여 모든 IP 주소에서의 접근을 허용하고, port 파라미터를 5000으로 설정하여 5000번 포트에서 애플리케이션을 실행합니다.

호스트와 컨테이너 간 네트워크 연결 설정

도커 컨테이너와 호스트 시스템 간의 특정 포트 통신을 위해, docker run 명령을 사용하여 컨테이너를 실행할 때 -p 옵션을 사용하여 호스트 포트와 컨테이너 포트를 매핑합니다.

다음은 앞서 작성한 Flask 애플리케이션을 담은 도커 이미지를 실행하는 명령어 예제입니다.

$ docker run -p 8888:5000 flask-app

위 명령어는 호스트 시스템의 8888 포트를 컨테이너의 5000 포트로 매핑하는 것을 의미합니다. 이제 호스트 시스템에서 http://localhost:8888로 접속하면 Flask 애플리케이션을 실행 중인 도커 컨테이너에 접근할 수 있습니다.

결론

도커 컨테이너와 호스트 시스템 간의 네트워크 연결 설정은 애플리케이션의 원활한 배포와 관리를 위해 중요한 단계입니다. 호스트와 컨테이너 간의 포트 매핑을 통해 네트워크 통신을 가능하게 하여 컨테이너에서 실행되는 애플리케이션에 접근할 수 있습니다.