일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- windows
- 리눅스
- cloud
- 메일보안
- 리눅스마스터1급
- 시트릭스
- Azure AD
- cloud engineer
- 가상화
- windows server
- 시스템 엔지니어
- Microsoft
- 시스템엔지니어
- 그룹정책
- Microsoft Azure
- Entra ID
- Microsoft 365
- Linux
- It
- 컴퓨터
- Exchange Online
- Azure
- 네트워크
- aws
- Docker
- 클라우드엔지니어
- network
- SE
- Server
- 클라우드
- Today
- Total
Cloud System Engineer
도커 네트워크 본문
도커 네트워크
컨테이너의 eth0 인터페이스는 호스트의 veth.... 라는 인터페이스와 연결되어 있으며 veth 인터페이스는 docker0 브리지와 바인딩 되어
외부와 통신할수 있다.
#brctl show docker0
도커에서 쓸 수있는 네트워크가 무엇이 있는지 확인
#docker netwokr ls
#docker network inspect bridge
브리지 네트워크
기본적으로 사용하는 docker0을 사용하는 브리지 네트워크가 아닌 새로운 브리지 타입의 네트워크를 생성한 후, 컨테이너가 사용하도록 해보자.
#docker network create --driver bridge mybridge
#docker run -i -t --name mynetwork_container --net mybridge ubuntu:14.04
mynetwork_container 이름의 컨테이너를 --net mybridge 라는 브릿지에 연결하고 ip 결과
172.17 대역에서 172.18 대역으로 올라갔다.
네트워크 끊기
# docker network disconnect mybridge mynetwork_container
네트워크 연결
# docker network connect mybridge mynetwork_container
네트워크의 ip대역대를 변경할수 있다.
#docker network create --driver=bridge --subnet=172.72.0.0/16 --ip-range=172.72.0.0/24 --gateway=172.72.0.1 my_custom_network
172.72.01 이라는 ip 가 생겼다.
논 네트워크
none 말그대로 아무런 네트워크를 사용하지 않는것을 뜻한다. 컨테이너를 생성하면 외부와 연결이 단절된다.
#docker run -i -t --name network_none --net none ubuntu:14.04
ip 를 받아오질 못한다.
컨테이너 네트워크
--net 옵션으로 container 를 입력하면 다른 컨테이너의 네트워크 네임스페이스 환경을 공유할 수 있다.
형식은 container:[다른컨테이너 의 id] 와 같다.
docker run -i -t -d --name network_container_1 ubuntu:14.04
# docker run -i -t -d --name network_container_2 --net container:network_container_1 ubuntu:14.04
-network 입력 부분에 다른 컨테이너 이름을 쓰면
컨테이너 1 , 컨테이너 2 둘다 172.17.0.2 ip를 쓴다
브리지 네트워크와 --netalias
브리지 타입의 네트워크와 run 명령의 -net-alias 옵션을 함께 쓰면 특정 호스트 이름으로 컨테이너 여러 개에 접근 할 수 있다.
컨테이너 3개 생성
docker run -i -t -d --name network_alias_container1 --net mybridge --net-alias jeong ubuntu:14.04
docker run -i -t -d --name network_alias_container2 --net mybridge --net-alias jeong ubuntu:14.04
docker run -i -t -d --name network_alias_container3 --net mybridge --net-alias jeong ubuntu:14.04
## 각 컨테이너의 ip 를 확인해본다
docker attach network_alias_container1~3 가서
ifconfig 해서 ip 확인
- 컨테이너 1 ip
- 컨테이너 2 ip
- 컨테이너 3 ip
172.18.0.2~172.18.0.4 나란히 받았다.
## 세개의 컨테이너에 접근할 컨테이너를 생성한 뒤 jeong 이라는 호스트 이름으로 ping을 해보자
docker run -i -t --name network_alias_ping --net mybridge ubuntu:14.04
ping -c 3 jeong
3개의 컨테이너 가 라운드 로빈 형식으로 동작한다.
이를 확인 하기위해 dig라는 도구를 써보자. dig는 dns로 도메인 이름에 대응하는 ip를 조회할 때 쓰는 도구이다.
docker attach network_alias_ping
apt-get update
apt-get install dnsutils
dig jeong
결과
모두 확인할 수 있다.
'리눅스 > docker' 카테고리의 다른 글
컨테이너 로깅 (0) | 2021.01.31 |
---|---|
MAC VLAN 네트워크 (0) | 2021.01.29 |
도커 볼륨 (0) | 2021.01.29 |
도커에 워드프레스를?? (0) | 2021.01.29 |
도커 설치 (0) | 2021.01.26 |