본문 바로가기

프로젝트/클라우드 스터디

[3회차]도커 네트워크 개념

도커 네트워크 개념

docker는 가상 네트워크(SDN)을 사용하여 컨테이너의 통신을 관리함. 

 

주요 네트워크 드라이버

드라이버 종류 설명
none (null)
  • 모든 네트워킹을 비활성화
  • 외부와 통신 불가능능
bridge
  • 기본 네트워크 드라이버
  • 일반적으로 애플리케이션 통신이 필요한 독립형 컨테이너에서 실행될 때 사용
host 
  • 컨테이너와 도커 호스트 간의 네트워크 격리 제거
  • 호스트의 네트워킹을 직접 사용함.
overlay 
  • 에러 도커 데몬을 함께 연결
  • 스윔 서비스가 서로 통신할 수 있도록 함. 



도커 네트워크 드라이버 지정 

docker run으로 생성시 --network옵션을 통해 지정 가능하다. 

docker run --rm --network host 이미지명 ip addr 
→ 컨테이너를 실행할 때 네트워크 옵션을 host로 지정




도커 네트워크 확인 명령

docker network ls



컨테이너의 네트워크 인터페이스 확인법

컨테이너 내부에서 ip addr 사용할 시엔? 

1.컨테이너 접속 
docker exec -it  컨테이너ID /bin/bash
root@컨테이너ID:~#

apt-get install net-tools    //아무것도 설치가 안되어있을 확률이 높음

2. ip addr





호스트 ip addr 

docker0 라는 bridge 네트워크가 생성됨. 

 

컨테이너는 docker0 인터페이스에 직접 연결 X 

vethXXXX 인터페이스에 bridge 드라이버로 연결됨. 



도커 컨테이너의 네트워크 구성도

https://jonnung.dev/docker/2020/02/16/docker_network/ 이미지 출처 

 

이렇게 해서 컨테이너끼리의 통신은 가능해짐. 하지만 다른 호스트의 컨테이너와는 통신 불가능! 본인 호스트와는 통신가능 ! 




컨테이너를 외부 통신 가능하게 하기 

컨테이너는 기본적으로 외부에서 컨테이너로 접근 불가능하다. 하지만 port forwarding을 활용하여 호스트의 IP로 요청을 받아 컨테이너 IP로 전달하는 통신 과정이 가능하게 함. 

 

도커 컨테이너 생성시 -p옵션을 통해 포트를 지정해줘야 함. 

docker run --name web1 -d -p 80:80 nginx //컨테이너의 80번 포트와 nginx의 80번 포트와 연결 

docker run -d --name my-nginx -p 80:80 -p 192.168.153.128:8080:80 nginx
  • -d : 컨테이너를 백그라운드에서 실행한다. 
  • --name : 본인이 따로 사용할 이미지의 별칭을 지정한다. 
  • -p 80:80 : docker컨테이너 80번 포트와 nginx 웹 서버 이미지의 80번 포트를 연결한다. 
  •  -p 192.168.153.128:8080:80 : VM ip인 192.168.153.128과 8080포트를 도커 컨테이너 80번 포트와 연결한다. 

 

https://docs.google.com/document/d/1gzp45_EeqLyLAIk2LGEcQAyy50wXVa0ldbhv9bLL2IE/edit?usp=sharing