상세 컨텐츠

본문 제목

[Docker] Docker의 네트워크 구조에 대해 알아보자

😎 지식/클라우드☁️

by :Eundms 2024. 1. 1. 12:56

본문

컨테이너간 통신(네트워크)

프로젝트에서 redis랑 spring boot 컨테이너랑 연결하다가 알게되었다

 

docker0

: 도커데몬이 시작되면, 생기는 도커 네트워크 인터페이스

- virtual ethernet bridge : 172.17.0.0/16

- L2 통신 기반

- container 생성 시,veth 인터페이스 생성(sandbox)

- 모든 컨테이너는 외부 통신을 docker0 통해 진행

- container running 시 172.17.X.Y 로 IP 주소 할당 

- docker network ls 했을 때 DRIVER 열에 있는 값이 bridge : 외부 네트워크와 연결되어 있는 네트워크 이 네트워크에 연결된 컨테이너는 외부의 레포지터리에 접근할 수 있으며, -p 옵션으로 외부에 포트를 공개할 수 있음

port-forwarding

container port를 외부로 노출시켜 외부 연결 허용

iptables rules를 통한 포트 노출

docker run -p hostport:containerport nginx:1.14
iptables -t nat -L -n -V

user-defined bridge network 생성

docker network ls  #컨테이너 네트워크 목록 출력
docker network inspect # 네트워크명을 지정해서 자세한 내용을 표시
docker network create # 컨테이너 네트워크를 생성
docker network rm # 컨테이너 네트워크를 삭제
docker network connect # 컨테이너를 컨테이너 네트워크에 접속
docker network disconnect # 컨테이너를 컨테이너 네트워크에서 분리

예시)

 

 

 

 

docker network crate --driver brdige \
--subnet 192.168.100.0/24 \
--gateway 192.168.100.254 \
mynet

docker network ls

docker run -d --name web -p 80:80 \
nginx:1.14

curl localhost

docker run -d --name app.js \
--net mynet --ip 192.168.100.100 \
-p 8080:8080 \ 
smlinux/app.js

curl localhost:8080
728x90

관련글 더보기

댓글 영역