Docker 네트워크

Panda·2024년 3월 30일

Server

목록 보기
4/5

당분간은
도커, 쿠버네티스에 공부를 집중해보려고 합니다.

도커 컨테이너를 2개를 띄어서 같은 instance에 실행 시켰는데
localhost로 통신을 하는 구간에서 Not Found가 떠서 찾아보니
도커 네트워크란게 따로 있더라고요?

쿠버네티스 가면 쿠버네티스가 다 해준다고 들었지만
궁금해서 한번 공부해보려고 합니다.

Docker 네트워크

컨테이너를 만들게 되면 내부 IP를 할당하게 됩니다, 이 IP는 컨테이너를 재시작할 떄마다 변경될 수 있고 내부망에서만 쓸 수 있습니다.

또한 컨테이너를 시작할 떄마다 veth 라는 외부 네트워크와 통신할 수 있는
네트워크 인터페이스를 만드는데 도커는 이 veth들과 실제 호스트의 네트워크를 이어줍니다.

IP를 할당해주는건 네트워크 드라이버가 그 역할을 맡고 있는데
네트워크 드라이버가 docker 말고도 다양한 네트워크 드라이버를 사용가능 합니다.

네트워크 드라이버

Native Driver

  • 브리지(Bridge)

    • 포트를 외부에 노출시키는 방식
  • 호스트(Host)

    • veth를 사용하지 않고 직접 Host의 네트워크에 붙는 방식
    • 해당 방식으로 컨테이너를 실행 시키면 포트 정보가 안보입니다.
  • 논(none)

    • 네트워크 기능을 사용 안합니다. (외부와 단절)
  • 컨테이너(container)

  • 오버레이(overlay)

Remote Driver

서드파티 플러그인이라고 생각하면 될 것 같습니다.

  • weave
  • flannel
  • openvswitch
    등등

네트워크 명령어

도커 네트워크 조회

  • docker network ls

도커 특정 네트워크 상세조회

  • docker network inspect [NETWORK ID or NAME]

도커 네트워크 생성

  • docker network create --driver=[NETWORK DRIVER] [DRIVER NAME]
    • ex) docker network create --driver=bridge my-bridge
  • 다양한 네트워크 옵션들을 설정하면서 생성이 가능합니다.

컨테이너 실행 시 네트워크 지정

  • docker run -d --network=[NETWORK DRIVER] [CONTAINER NAME]
  • ex) docker run -d --name test-container -p 8080:8080 --network=my-bridge boo10500/myrepo:test

네트워크에 컨테이너 추가

  • docker network connect my-bridge my-container

네트워크에 컨테이너 제거

  • docker network disconnect my-bridge my-container

네트워크 삭제

  • docker network rm my-bridge
    • 특정 네트워크를 삭제합니다. (네트워크에 실행 중인 컨테이너가 없어야 합니다.)
  • docker network prune
    • 아무 컨테이너가 연결되지 않은 네트워크 들만 삭제 합니다.

느낀 점

나중에 실제 구성할 때는 왠만하면 도커 네트워크 구성은 안하고
쿠버네티스 측에서 구성할 것 같기는 한데
그래도 알아두면 나중에 많이 도움이 되지않을까요??

단순한 도커 구성할때면 혹시 몰라서 구성할 수도 있고
무엇보다 궁금해서 공부해보았습니다. ㅋㅋㅋㅋㅋ

참고

profile
실력있는 개발자가 되보자!

0개의 댓글