Docker Network

2025. 1. 20. 16:49·Server
반응형

네트워크 인터페이스 계층

네트워크 인터페이스(Network Interface)란 컴퓨터/장치가 네트워크와 상호작용하기 위한 연결점이며,

데이터를 주고받을 수 있는 하드웨어/소프트웨어 구성요소이다.

네트워크 인터페이스는 컴퓨터간 통신을 가능하게 하며, 데이터 전송과 수신을 처리한다.

 

네트워크 계층을 통해 컴퓨터와 외부 네트워크의 물리적인 연결이 이루어진다. 

1) 컴퓨터로부터 나오는 디지털 데이터를 물리적 신호로 변환

2) 네트워크로부터 받은 물리적 신호를 컴퓨터에서 처리할 수 있는 디지털 데이터로 변환

 

TCP/IP 모델에서 최하층에 위치한 네트워크 인터페이스 계층은 

인접한 네트워크 기기 간 전송 매체로 연결되어 물리적 신호가 도달하는 범위에서 데이터를 전송한다. 

이를 통해 상위 계층은 네트워크용 하드웨어 종류에 상관없이 통신할 수 있게 된다. 

 

 

도커 네트워크

도커도 네트워크를 구성한다.

도커 네트워크란, Docker 컨테이너 간의 통신을 관리하고 격리하기 위한 기능을 제공하는 것이다.

컨테이너화된 애플리케이션도 여러개의 컨테이너로 구성될 수 있다.

그래서 컨테이너끼리 통신하고, 데이터를 주고받아야 할 때 도커 네트워크가 필요하다.

정리하자면, 도커 네트워크란 같은 호스트 내에서 실행중인 컨테이너 간 연결할 수 있도록 돕는 논리적 네트워크 개념이다.

 

아래 yml과 같이 fronted, backend, db 라는 이름의 컨테이너를 mynetwork라는 하나의 네트워크로 묶을 수 있다.

이 컨테이너들은 같은 네트워크 안에서 통신하며 데이터를 주고받을 수 있게 된다. 

 

version: '3'

services:
  front: # front container
    image: frontend
    networks:
      - mynetwork
  backend: # backend container
    image: backend
    networks:
      - mynetwork
  db: # db container
    image: mysql
    networks:
      - mynetwork
    environment:
      MYSQL_ROOT_PASSWORD: mypassword

networks:
  mynetwork:
	   .... # mynetwork 네트워크

 

 

도커 컨테이너마다 다른 IP와 포트가 존재한다. 

도커는 호스트로부터 실행되는 컨테이너에 172.17.0.x의 IP를 순차적으로 할당하게 된다.

내부 IP(호스트 내부)는 컨테이너를 재시작할 때마다 변경될 수 있다. 

기본적으로 도커 컨테이너는 외부에서 접근할 수 없으며(내부망에서만 쓸 수 있는 IP이므로), 해당 도커 컨테이너를 구동시킨 호스트에서만 접근이 가능하다. 

도커는 각 컨테이너에 외부와의 네트워크 접속이 가능하게 하기 위해 가상 네트워크 인터페이스를 제공하는데, 이것이 veth 인터페이스이다.

veth 인터페이스는 컨테이너가 생성될 때 도커 엔진이 자동으로 생성해주며, 호스트가 갖고있는 eth0, eth1 등과 연결되어 있다. 

docker0 브리지는 각 veth 인터페이스와 바인딩되어 호스트의 eth0 인터페이스와 이어주는 역할을 한다. 

컨테이너를 생성하면 기본적으로 docker0 브리지를 통해 외부와 통신할 수 있지만

사용자의 선택에 따라 여러 네트워크 드라이버도 사용 가능하다. 

 

veth

도커로 구동된 애플리케이션은 당연하게도, 일반적인 컴퓨터 애플리케이션처럼 물리적인 네트워크 인터페이스를 사용할 수 없다.

veth는 리눅스의 virtual ethernet interface이며, 가상의 네트워크 인터페이스를 생성해준다. 

veth는 일반적인 네트워크 인터페이스와 달리, 항상 쌍으로 생성해주어야 한다. 

왜냐하면 자신에게 연결된 다른 네트워크 인터페이스로 패킷을 보내주는 방식으로 동작하기 때문이다. 

따라서 한 쪽이 다운된 경우 나머지 한 쪽도 정상적으로 기능하지 않는다. 

도커에서는 실행중인 컨테이너 수만큼 veth~로 시작하는 인터페이스가 생성된다. 

 

 

반응형

'Server' 카테고리의 다른 글

[Linux] 서버에 사용자를 추가하고, 관리자 그룹에 추가하기  (0) 2025.03.10
VLAN  (0) 2025.01.21
IP와 서브넷  (0) 2025.01.21
스위치  (0) 2025.01.21
FW - NAT(Network Address Translation)  (0) 2025.01.18
'Server' 카테고리의 다른 글
  • VLAN
  • IP와 서브넷
  • 스위치
  • FW - NAT(Network Address Translation)
kiritoni
kiritoni
안녕하세요, cool & soft한 백엔드 개발자가 되고싶은 토니입니다!
    반응형
  • kiritoni
    Code Art Online
    kiritoni
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • 경험 모음집 (5)
      • Spring Boot (9)
      • Java (0)
      • JPA (0)
      • Server (13)
      • CS (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JPA
    kdt
    Spring boot
    backend
    구름톤
    빅챗
    서버
    Spring
    springboot
    network
    ubuntu
    구름톤딥다이브
    pfsense
    server
    AUSG
    알고리즘
    nlb
    Linux
    springSecurity
    java
    백준
    gdgoc
    해커톤
    docker
    보안
    CS
    be
    로드밸런서
    고용노동부
    웹
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
kiritoni
Docker Network
상단으로

티스토리툴바