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

도커(Docker)는 가상화 기술을 통해 애플리케이션을 컨테이너화하여 실행할 수 있는 플랫폼입니다. 도커를 사용하면 애플리케이션을 격리된 환경에서 실행하고 필요한 리소스를 효율적으로 관리할 수 있습니다. 하지만 도커 컨테이너와 호스트 간의 네트워크 설정은 중요한 측면 중 하나입니다. 이 글에서는 도커 컨테이너와 호스트 간의 네트워크 설정을 파이썬 코드를 통해 알아보겠습니다.

도커 컨테이너 네트워크 설정

도커 컨테이너의 네트워크 설정은 도커 네트워크(Docker Network)를 통해 구성됩니다. 도커 네트워크는 컨테이너 간의 통신을 관리하는 가상 네트워크입니다.

먼저, 도커 네트워크를 생성해보겠습니다. Python Docker SDK를 사용하여 코드로 작성하면 다음과 같습니다.

import docker

# 도커 클라이언트 생성
client = docker.from_env()

# 도커 네트워크 생성
network = client.networks.create("my_network")
print("도커 네트워크 생성 완료:", network.id)

위 코드에서는 docker 모듈을 import하고, 도커 클라이언트를 생성하고 있습니다. 그 다음 create() 메서드를 사용하여 my_network라는 이름의 도커 네트워크를 생성하고, 생성된 네트워크의 ID를 출력합니다.

이어서, 도커 네트워크에 컨테이너를 연결해보겠습니다. 다음 코드를 사용합니다.

# 도커 컨테이너 생성
container = client.containers.create("nginx", detach=True)

# 도커 네트워크에 컨테이너 연결
network.connect(container, aliases=["my_container"])

# 컨테이너 시작
container.start()
print("컨테이너 시작 완료:", container.id)

위 코드에서는 containers.create() 메서드를 사용하여 nginx 이미지로부터 컨테이너를 생성하고 있습니다. 그리고 network.connect() 메서드를 사용하여 생성된 도커 네트워크에 컨테이너를 연결하고 있습니다. 여기서 aliases 매개변수를 사용하면 컨테이너에 별칭을 지정할 수 있습니다. 마지막으로 start() 메서드를 호출하여 컨테이너를 시작합니다.

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

이번에는 호스트와 도커 컨테이너 간의 네트워크 연결을 설정하는 방법을 알아보겠습니다.

호스트와 컨테이너 간의 네트워크 연결은 포트 포워딩(Port Forwarding)을 통해 가능합니다. 포트 포워딩을 사용하면 호스트의 특정 포트와 컨테이너의 포트를 매핑하여 통신할 수 있습니다.

다음은 호스트의 포트 8080을 컨테이너의 포트 80과 연결하는 예제 코드입니다.

# 컨테이너 생성
container = client.containers.create("nginx", detach=True, ports={"80/tcp": 8080})

# 컨테이너 시작
container.start()
print("컨테이너 시작 완료:", container.id)

# 컨테이너의 포트 정보 조회
container.reload()
print("컨테이너의 포트 정보:", container.ports)

위 코드에서는 containers.create() 메서드에서 ports 매개변수를 사용하여 호스트의 포트와 컨테이너의 포트를 매핑하고 있습니다. 예제에서는 호스트의 포트 8080을 컨테이너의 포트 80과 매핑하였습니다. 이후 container.ports를 통해 컨테이너의 포트 정보를 조회할 수 있습니다.

이렇게 포트 포워딩을 설정하면 호스트와 컨테이너 간의 네트워크 통신을 설정할 수 있습니다.

도커 컨테이너와 호스트 간의 네트워크 설정을 파이썬 코드로 간단하게 알아보았습니다. 도커 네트워크를 생성하여 컨테이너를 연결하고, 호스트의 포트와 컨테이너의 포트를 매핑하여 통신할 수 있습니다. 이런 네트워크 설정은 도커 애플리케이션을 설계하고 구축하는 과정에서 중요한 요소입니다.