Docker

[Docker] Docker network

얀타호수 2025. 8. 13. 09:38

도커 네트워크 구조에 대해 알아봅시다.,

 

docker 컨테이너는 네트워크 설정을 대부분 자동으로 해줍니다.

 

docker run -itd --name test-nginx nginx

이런 명령어를 실행할 때, network에 대한 설정을 따로 할 필요가 있었을까요?

 

우리는 

ip를 직접 할당

라우팅 테이블 수정

방화벽 규칙 추가

DNS 설정

을 하지 않았습니다.

 

 

 

docker는 기본적으로 vm 을 veth pair로 생성하는데요

veth 한쪽을 container의 ceth0에 붙여 내부 IP를 만들고

다른 한쪽을 host의 bridge network에 붙인다 여기서 bridge network는 docker0

 

 

container → 외부 접근 시 docker0 거쳐 호스트의 NAT 규칙을 통해 통신

 

 

 

밖에서 컨테이너로 접근하기 위해선..?

 

컨테이너는 별도의 네트워크 네임스페이스를 가지기 때문에,

호스트에서 컨테이너로 직접 접근하는 것은 추가설정이 필요합니다.

외부에서 컨테이너로 접근하기 위해선

포트포워딩 이 필요합니다 :) 

사실 저희가 도커 컨테이너 실행할 때 많이 사용했었습니다아

 

docker run -p [호스트포트]:[컨테이너포트]
  • 내부적으로는 iptables 포트포워딩으로 규칙 생성
  • Dockerfile의 EXPOSE와는 다름
    • Dockerfile EXPOSE → 포트 정보 제공
    • -p (포트포워딩) → 호스트와 포트 매핑