본문 바로가기

data engineering/docker

[Docker] network

1. docker network

  • 정의
    • Docker 컨테이너 간의 통신을 관리하고 격리하기 위한 기능
  • 필요성
    • 아래 예시와 같이, 다수의 컨테이너로 구성된 웹서비스 실행하면 서로 네트워크 연결이 되지 않아 서비스가 실행되지 않음
    • docker network 기능을 사용하면, 이를 해결할 수 있음

 

2. 실습 예시 - voting application

 

  • 매뉴얼하게 하나씩 빌드해보기 - 이 경우, 각 컴포넌트간의 네트워크 연결이 안됨!
    • 이미지 빌드
      • docker build -t vote ./vote
      • docker build -t result ./result
      • docker build -t worker ./worker
      • docker images # 확인
    • 이미지 실행
      • docker run -d --name=redis redis
      • docker run -d -e POSTGRES_PASSWORD=pawword --name=db postgres
      • docker run -d --name=vote -p 5001:80 vote
      • docker run -d --name=result -p 5002:80 result
      • docker run -d --name=worker worker
    • 네트워크 관련 이슈 확인
      • vote로 로그인해, iputils-ping 설치 후 ping 명령으로 redis 호스트 이름이 연결되는지 확인
        • $ ping redis
        • ping: cannot resolve redis: Unknown host

 

  • network 기능 사용 - 네트워크 이슈를 해결
    • network를 하나 만들고, 모든 컨테이너들을 이 네트워크 안으로 지정 (*연결 상황에 따라 별개의 네트워크를 만들어 사용할 수도 있음)
    • docker network create
      • docker network create mynetwork
      • docker run -d --name=redis --network mynetwork redis
      • docker run -d --name=db -e POSTGRES_PASSWORD=password --network mynetwork postgres
      • docker run -d --name=vote -p 5001:80 --network mynetwork vote
      • docker run -d --name=result -p 5002:80 --network mynetwork result
      • docker run -d --name=worker --network mynetwork worker
    • 네트워크 관련 이슈 확인
      • vote로 로그인해, iputils-ping 설치 후 ping 명령으로 redis 호스트 이름이 연결되는지 확인
        • $ ping redis
        • PING redis ... (성공)

 

 

 

[출처] 데이터 엔지니어링 데브코스

'data engineering > docker' 카테고리의 다른 글

[Docker] Clean up  (0) 2024.05.30
[Docker] Volume  (0) 2024.05.29
[Docker] 명령어 사전  (0) 2024.05.29
[Docker] Docker & Github  (0) 2024.05.29
[Docker] Port forwarding(=Port mapping)  (0) 2024.05.29