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