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

도커 컨테이너와 호스트 간의 네트워크 설정은 두 가지 방법으로 할 수 있습니다. 첫 번째는 호스트와 컨테이너 사이에 포트 포워딩을 설정하는 것이고, 두 번째는 컨테이너에 고정된 IP 주소를 할당하는 것입니다.

먼저, 포트 포워딩을 설정하는 방법을 알아보겠습니다. 포트 포워딩은 호스트의 특정 포트와 컨테이너의 포트를 연결하여 호스트와 컨테이너 간의 통신을 가능하게 합니다. 다음은 파이썬 Flask 애플리케이션을 실행하는 도커 컨테이너를 예로 들어 포트 포워딩을 설정하는 코드입니다.

import docker

client = docker.from_env()
container = client.containers.run(
    'python-flask-app',
    detach=True,
    ports={'5000/tcp': ('0.0.0.0', 5000)}
)

위 코드에서는 docker 파이썬 라이브러리를 사용하여 도커 클라이언트를 생성하고, 컨테이너를 실행합니다. ports 매개변수를 사용하여 호스트 포트 5000과 컨테이너 포트 5000을 연결하도록 지정합니다.

다음으로, 컨테이너에 고정된 IP 주소를 할당하는 방법을 알아보겠습니다. 고정된 IP 주소를 할당하면 호스트와 컨테이너 사이의 통신에 IP 주소를 사용할 수 있습니다. 다음은 파이썬 스크립트를 사용하여 도커 컨테이너에 IP 주소를 할당하는 코드입니다.

import docker

client = docker.from_env()
network = client.networks.create(
    'my_network',
    driver='bridge',
    ipam=docker.types.IPAMConfig(
        pool_configs=[docker.types.IPAMPool(
            subnet='172.28.0.0/16',
        )]
    )
)

container = client.containers.run(
    'python-flask-app',
    detach=True,
    network='my_network',
    ipv4_address='172.28.0.2'
)

위 코드에서는 docker 라이브러리를 사용하여 도커 클라이언트를 생성하고, 컨테이너를 실행하기 전에 네트워크를 생성합니다. ipv4_address 매개변수를 사용하여 컨테이너에 고정된 IP 주소를 할당합니다.

도커 컨테이너와 호스트 간의 네트워크 설정을 파이썬을 사용하여 할 수 있습니다. 포트 포워딩을 설정하거나 고정된 IP 주소를 할당하여 호스트와 컨테이너 간의 통신을 가능하게 할 수 있습니다. 이러한 기능을 통해 도커 컨테이너를 더욱 유연하게 활용할 수 있습니다.