본문 바로가기
Docker

Docker : Network

by Nirah 2022. 12. 9.

Docker 에서 사용하는 대표적인 네트워크는 크게 3가지로 분류된다.

 

1. Bridge

2. Host

3. None

 

 

Docker : Network

 

네트워크 어뎁터 검색

# docker network ls

 

bridge 어뎁터는 VMware의 NAT카드랑 비슷한 역할을 한다.

null 네트워크 카드는 네트워크 연결이 안 된 상태다. 악성 코드 등을 동적으로 분석할 때 사용한다.

 

ip a

bridge 어뎁터는 ip address에선 docker0으로 표현돼있다.

 

참고로 아래쪽의 veth3c28920@if24 는 m1 컨테이너를 하나 만들어서 생성된 로컬쪽 ip 정보다.

docker exec m1 ip a

이름을 잘 보면 로컬 ip add와 m1 컨테이너의 포트가 서로 매핑 되는 것을 확인할 수 있다.

 

 

 

 

 

브릿지 어뎁터 카드 사용하여 컨테이너 설정

 

브릿지 어뎁터 카드 생성

별도 조건 없이 컨테이너 생성 시 bridge 어댑터를 사용한다.

실행하려는 프로토콜 포트만 다르면 같은 네트워크 카드를 얼마든지 사용 가능하다.

( httpd와 nginx는 같은 포트를 쓰고 있기 때문에 불가하다)

 

docker network create --subnet 192.168.0.0/24 --gateway 192.168.0.254 babo

 

 docker inspect babo

 

만든 네트워크 브릿지 어뎁터를 지정하여 컨테이너 실행

docker run -itd --name m1 --net babo alpine

 

babo라는 bridge 네트워크 어댑터가 사용 된다.

docker inspect m1

 

bridge 어댑터라서 외부로 핑이 잘 나간다.

docker exec m1 ping 8.8.8.8

 

프로세스 초기화

docker rm -f $(docker ps -aq)

 

 

 

서로 다른 브릿지간 통신

 

브릿지는 서로 독립적으로 구성되어 있기 때문에 브릿지가 다르면 통신이 안 된다.

이를 확인해 보기위해 추가 구성

subnet 192.168.1.0/24 gateway는 마지막 Ip add로 test라는 bridge 네트워크를 생성

docker network create --subnet 192.168.1.0/24 --gateway 192.168.1.254 test

 

bridge 네트워크에 a1, a2

babo 네트워크에 aa1, aa2

test 네트워크에 aaa1, aaa2 생성

 

docker run -itd --name a1 alpine

docker run -itd --name a2 alpine

docker run -itd --name aa1 --net babo alpine

docker run -itd --name aa2 --net babo alpine

docker run -itd --name aaa1 --net test alpine

docker run -itd --name aaa2 --net test alpine

 

docker exec a1 ping 172.17.0.3

같은 브릿지 네트워크는 통신이 잘된다

 

docker exec a1 ping 192.168.0.1

다른 브릿지 네트워크는 통신이 안된다.

 

 

 

 

호스트 어뎁터 카드 사용하여 컨테이너 설정

yum install -y net-tools

docker run -itd --net host --name h1 httpd

 

host 카드를 쓰는 경우 방화벽은 직접 열어줘야 한다.

netstat -nat 로 확인.

80 포트를 쓴다고 나온다.

방화벽 열기

firewall-cmd --add-port=80/tcp

 

host pc에서 WEB 접속

10.0.0.21:80

 

 

'Docker' 카테고리의 다른 글

HAProxy - Multi LoadBalancing  (0) 2022.12.13
Docker : Link  (0) 2022.12.09
Volume / bind mount ( Container Data 공유)  (0) 2022.12.09
Docker : MySQL:5.7 +php 설치  (0) 2022.12.09
다른 container로 image 옮기기 (export, import, 환경변수)  (0) 2022.12.08