kh교육

(20250901046)docker network

boangod 2025. 9. 1. 11:27

docker 네트워크

 

 

Docker bridge Network구조: default로제공되고사용되는네트워크

 

 

 

 

 

host는 내 컴퓨터일수도있고 클라우드 일수도 있다.

 

 

컴퓨터에 도커를 깔면 docker0가 자동으로 생성된다.

ㄴ vmnet8이랑 비슷함. ip설정은 안하는게 되도록 좋다.

컨테이너 만들때 마다 veth가 만들어진다. 이친구는 그냥 연결해주는 친구라 ip가 할당 안됨. (왜 있는지는 모름.)

 

 docker0

     • Docker에서 기본 제공되는 bridge 네트워크 인터페이스 → 브릿지는 그냥 연결한다는 의미임.

     • 172.17.0.1이 기본 할당되며 container에 DHCP를 제공한다. → ip는 자동으로 할당됨.(외부에서 볼수없어서 ip가 뭔지는 의미는 없음.)

 veth#######

     • Container의 eth0와 쌍으로 제공되어 docker0와 연결한다.

     • docker0와 eth0가 직접 연결되지 않는 이유는???

 eth0

     • Container의 인터페이스로 docker의 bridge 네트워크로 부터 IP를 자동할당 받는다.

     • IP를 직접 지정하는 것도 가능하다.

 

 

  Container나 VM 환경의 네트워크는 일반적인 물리적 네트워크와 비슷하지만 동일하지 않다

 

컨테이너의 ip주소나 이름을 잘 신경안쓴다. 만들때 겁나 많이 만들기 때문이다. 접속은 포트번호로 접속. 접속식별할때 이름으로 확인함.

 

 

Container에서발생한패킷이외부로전송되는과정-host에서 패킷캡처

① Container:eth0 → veth#######

② veth####### → docker0:enp1s0

③ enp1s0 → 외부

 

 

Docker 에서 제공하는 네트워크

 

• bridge- 기본 네트워크로 컨테이너 실행시에 자동으로 선택된다.

ㄴ docker0사용하면 브릿지라고 함. • host- 호스트의 네트워크를 직접 이용한다.

 

• none- Container가 네트워크를 사용하지 않도록 설정한다.

 

• 사용자 정의 네트워크- 사용자가 직접 CIDR을 지정해서 생성하는 네트워크

ㄴ 새로운 브릿지 사용. 이걸로 하면 컨테이너 이름으로 통신할수 있음.

 

• overlay- 다중 호스트 도커 서버를 이용하는 경우 사용된다.

 

• macvlan- 물리적인 네트워크에 컨테이너 mac 주소를 통해 직접 연결한다.

 

 

Network 명령

docker network 하위명령 [option] network_name

 

ls 네트워크 목록을 표시한다 
create 네트워크를 생성한다.
inspect 상세한 정보를 확인한다
connect/disconnect Container를 네트워크에 연결/연결해제 한다
rm 네트워크를 삭제한다.

 

 

 

docker network ls [option]

 

-no-trunc 자세한정보를출력한다.
-q, --quiet 네트워크 ID만 출력
-f, --filter 필터키를이용해서출력을필터링한다.

 

 

docker network inspect 네트워크

ㄴ 자세한 정보를 출력

 

 

docker network create [option] network_name

 

d, --driver bridge/overlay 지정( 반드시 지정. )
--ip-range container에 할당되는 IP 범위 지정
--subnet 서브넷을 CIDR로 지정
--ipv6 ipv6 사용여부
--label label 지정

 

 

네트워크가 생성되면 bridge 인터페이스가 생성된다.

 

기존 bridge를 사용할 경우 : containe간 통신은 IP만 가능하다.

 

임의의 네트워크를 사용할 경우 : container간 통신에 name, IP 사용 가능

 

mynet : 생성된 bridge 네트워크

 

# docker network create --driver=bridge --subnet=172.18.0.0/16 mynet

# docker run -itd--net=mynet--name myos1 centos:8

# docker run -itd--net=mynet--name myos2 centos:8

# docker attach myos1

# ping myos2

PING myos4 (172.18.0.3) 56(84) bytes of data.

64 bytes from myos4.mynet (172.18.0.3): icmp_seq=1 ttl=64 time=0.120 ms

64 bytes from myos4.mynet (172.18.0.3): icmp_seq=2 ttl=64 time=0.131 ms

64 bytes from myos4.mynet (172.18.0.3): icmp_seq=3 ttl=64 time=0.132 ms

64 bytes from myos4.mynet (172.18.0.3): icmp_seq=4 ttl=64 time=0.253 ms

64 bytes from myos4.mynet (172.18.0.3): icmp_seq=5 ttl=64 time=0.128 ms

64 bytes from myos4.mynet (172.18.0.3): icmp_seq=6 ttl=64 time=0.130 ms

64 bytes from myos4.mynet (172.18.0.3): icmp_seq=7 ttl=64 time=0.131 ms

 

'kh교육' 카테고리의 다른 글

(20250903046)image  (0) 2025.09.03
(20250902046)data와 volume  (0) 2025.09.02
(20250829046)docker  (1) 2025.08.29
(20250827044)Docker Image & HUB  (0) 2025.08.27
(20250826043)oracle  (1) 2025.08.26