Docker network

조민철·2024년 7월 6일

Docker

목록 보기
4/4
post-thumbnail

Docker Network


도커는 컨테이너를 생성할 때마다 컨테이너에 veth(Virtual Ethernet Interface)를 생성하게 된다. 또한 이 컨테이너에 부여되는 IP는 내부망에서만 사용할 수 있는 사설IP 대역이다. docker0는 각 veth 인터페이와 바인딩 되어 호스트의 eth0 인터페이스와 이어주는 역할을 한다. eth0 인터페이스는 현재 호스트의 컴퓨터의 NIC이다.
컨테이너를 생성하면 기본적으로 docker0 브리지를 통해 외부 네트워크와 통신할 수 있는 제공하지만 환경에 따라 여러 네트워크 드라이버를 사용할 수 있다.

  • 네트워크 드라이버
    • 브리지(Bridge), 호스트(Host), 논(None), 컨테이너(Container), 오버레이(Overlay)
    • 서드파드 (Third-party): weave, flannel, openvswitch

Docker Network check

$ docker network ls

 docker network inspect bridge


네트워크의 자세한 내용을 확인이 가능한데 컨테이너 생성시 자동으로 네트워크를 부여하고 네트워크에 대한 아무런 설정 없이 컨테이너를 생성하면 docker0 브리지를 사용하게 된다

  "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }

설정값을 보게 된다면 172.17.0.0/16 네트워크에 게이트웨이는 172.17.0.1로 설정이 되어있는 모습을 확인할 수 있다

bridge 네트워크 생성 & 활용

docker network create --driver bridge [bridge name]


bridge 형식으로 만든 네트워크를 ls 명령어로 확인해보니 잘 생성되었다는것을 확인이 가능하다.

컨테이너 생성시 특정 네트워크를 지정 할려고 하면 --net [bridge name] 옵션을 사용해서 지정을 해주게 되면 된다.


docker run 명령어를 사용해서 컨테이너를 생성하는데 --net 옵션을 더해 mincheol2br 이라는 네트워크를 이용하여 생성하라고 지정하였다


설정된 IP 주소를 확인해보면 172.18.0.2 번 아이피로 설정된것으로 확인이 된다

172.18.0.0 네트워크 대역은 방금생성한 mincheol2br 네트워크이고 이 네트워크를 사용하여 생성하여서 다음과 같은 IP가 컨테이너에 부여된것이다.


disconnect 를 사용하여 사용하고있는 네트워크를 연결을 끊어줄수도 있다.


컨테이너 네트워크를 docker0로 변경할려먼 그전 mincheol2br 네트워크를 해제하고 connect 명령어를 사용하여 docker0에 연결 해주면 네트워크가 설정되게 된다

profile
기록의 힘은 대단하다

1개의 댓글

comment-user-thumbnail
2024년 7월 6일

좋은 글 감사합니다

답글 달기