jekins 학습의 시발점에 docker network create jenkins 명령어를 만났고,
도커 Birdge Network를 학습한 내용을 정리한다.
일단 위 명령어는 "jenkins"라는 도커 Bridge Network 를 만든다.
1. Bridge Network 가 뭔가요 ?
- 도커의 기본 네트워크 드라이버.
- 도커 네트워크 생성 시 네트워크 드라이버를 정의하지 않으면 Bridge Network 로 만들어진다.
- Bridge Network는 주로 통신이 필요한 독립 실행형 컨테이너에서 사용된다.
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
8c99b66b3f04 bridge bridge local
fb4e9b287e33 host host local
33d3c47f8dad none null local
2. Bridge Network 는 어떻게 사용되나요?
- Docker를 설치한 후 Host(도커를 설치한 PC) 네트워크를 보면 "docker0" 이라는 인터페이스를 확인할 수 있다.
- 이 인터페이스는 virtual ethernet bridge 이다. 컨테이너 생성 시 별도의 network 설정을 하지 않으면 "docker0" 브릿지를 통해 컨테이너와 Host가 통신하게 된다. ([참고] Windows 에서는 "docker0" 인터페이스를 확인할 수 없다. virtual machine 안에 있다.)
$ ifconfig docker0
docker0 Link encap:Ethernet HWaddr 02:42:90:f4:b3:c5
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
3. Bridge Network, "birdge"
- 172.17.0.0/16 서브넷을 갖는다.
- 컨테이너가 생성되면 이 대역의 IP(172.17.0.0 ~ 172.17.255.255)를 할당받게 된다.
IP는 컨테이너가 재시작할 때마다 변경될 수 있다.
$ docker network inspect jenkins
[
{
"Name": "bridge",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{ "Subnet": "172.17.0.0/16" }
]
},
...
}
]
4. 통신 구조
- 컨테이너는 외부와 통신하기 위해 2개의 네트워크 인터페이스를 생성한다.
- 하나는 컨테이너 내부 Namespcae에 할당되는 "eth0" 이름의 인터페이스 이고, 다른 하나는 호스트의 네트워크 브릿지 = "docker0"에 바인딩 되는 "vethXXXXXXXX" 형식의 이름을 가진 veth 인터페이스 이다.
# 도커 네트워크 개요
도커 컨테이너, 서비스의 장점 중 하나는
도커 워크로드인지 도커로 배포되었는지 신경 쓸 필요가 없이 하나로 연결할 수 있다는 점이다.
도커 호스트가 윈도우, 리눅스, 윈도우+리눅스 실행하던 플랫폼에 관계없이 관리할 수 있다.
# 네트워크 확인 - docker network ls
# 네트워크 자세한 정보 - docker network inspect {네트워크 이름}
0. bridge / host / .... / none / overlay / ipvlan / macvlan
1. bridge
기본 네트워크 드라이버. 네트워크 생성 시 드라이버를 정의하지 않으면 bridge로 만들어진다. Bridge Network는 주로 통신이 필요한 독립 실행형 컨테이너에서 사용된다
Docker를 설치한 후 도커 호스트 네트워크를 보면 "docker0" 이라는 가상 인터페이스가 생긴다. 일반적인 인터페이스가 아니라 virtual ethernet bridge이다.
2. host : 독립 실행형 컨테이너의 경우, docker Host와 container 간의 네트워크 격리를 제거하고 호스트 네트워킹을 직접 사용.
'Develop > DevOps' 카테고리의 다른 글
Vagrant 가 뭐지? (0) | 2022.05.15 |
---|---|
[docker] ERROR [internal] load metadata for docker.io/library/node:14.17.0-alpine (0) | 2021.12.28 |
[docker] 명령어 cheatsheet (0) | 2021.12.26 |
[docker] 도커는 어떻게 컨테이너를 격리 시킬까?🤔 (0) | 2021.12.26 |
[jenkins] React 프로젝트 Docker + jenkins로 CI/CD (0) | 2021.12.25 |
댓글