728x90
<Docker 네트워크 토폴로지>
- 프론트엔드: 192.168.58.0/24
- 백엔드: 192.168.57.0/24
1. 네트워크 생성
ubuntu@host1:~$ docker network create --driver bridge --subnet 192.168.58.0/24 --ip-range 192.168.58.0/24 --gateway 192.168.58.1 front-net
93e52c12f35a98719f5e62d1363681f8519244e5014b974169b8b87a51e205be
ubuntu@host1:~$ docker network create --driver bridge --subnet 192.168.57.0/24 --ip-range 192.168.57.0/24 --gateway 192.168.57.1 back-net
b9f7835da811d5f7e6d9c6a53c15233ad0d530558d0279998858b2a07e6dca27
<확인>
ubuntu@host1:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
**b9f7835da811 back-net bridge local**
711070d16ea3 bridge bridge local
**93e52c12f35a front-net bridge local**
a10c647d79d1 host host local
5d20ddd4847a mynet bridge local
2881784d86b9 mynet2 bridge local
2785de26c8d7 none null local
2. 레이어 확인
ubuntu@host1:~$ docker network inspect front-net
ubuntu@host1:~$ docker network inspect back-net
3. 컨테이너 생성
ubuntu@host1:~$ docker container run --name=my-web -itd --net=front-net ubuntu:14.04
c09d2968612d66befdbcd00ff98b0e7f234057c0b525480400c14ecdcc1ea44a
ubuntu@host1:~$ docker container run --name=my-was -itd --net=back-net ubuntu:14.04
19a751877c3099ca76b5381adbd090af8e4f42de80d0b8dfc9b50b048a756f2e
ubuntu@host1:~$ docker container run --name=my-db -itd --net=back-net ubuntu:14.04
b800f6978568e62df49967a0f2ed1a01899daa947c2b54b0d3166b2e24b4b84b
<확인>
ubuntu@host1:~$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c09d2968612d ubuntu:14.04 "/bin/bash" 2 minutes ago Up 2 minutes my-web
b800f6978568 ubuntu:14.04 "/bin/bash" 3 minutes ago Up 3 minutes my-db
19a751877c30 ubuntu:14.04 "/bin/bash" 3 minutes ago Up 3 minutes my-was
4. 라우터 설정
- docker container exec 컨테이너 이름 route
- my-web
ubuntu@host1:~$ docker container exec my-web route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.58.1 0.0.0.0 UG 0 0 0 eth0
192.168.58.0 * 255.255.255.0 U 0 0 0 eth0
- my-db
ubuntu@host1:~$ docker container exec my-db route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.57.1 0.0.0.0 UG 0 0 0 eth0
192.168.57.0 * 255.255.255.0 U 0 0 0 eth0
<설정 확인>
- IP 확인: docker container exec (컨테이너 이름) ip a
<my-web> 프론트엔드
- 192.168.58.2/24
ubuntu@host1:~$ docker container exec my-web ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
15: eth0@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:c0:a8:3a:02 brd ff:ff:ff:ff:ff:ff
**inet 192.168.58.2/24** brd 192.168.58.255 scope global eth0
valid_lft forever preferred_lft forever
<my-db> 백엔드
- 192.168.57.3/24
ubuntu@host1:~$ docker container exec my-db ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
13: eth0@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:c0:a8:39:03 brd ff:ff:ff:ff:ff:ff
**inet 192.168.57.3/24** brd 192.168.57.255 scope global eth0
valid_lft forever preferred_lft forever
<my-was> 백엔드
- 192.168.57.2/24
ubuntu@host1:~$ docker container exec my-was ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
11: eth0@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:c0:a8:39:02 brd ff:ff:ff:ff:ff:ff
**inet 192.168.57.2/24** brd 192.168.57.255 scope global eth0
valid_lft forever preferred_lft forever
<ping 확인>
- docker container exec (ping 출발지 이름) ping -c 3 (ping 받을 컨테이너 / ip 주소)
- -c 3: 패킷을 세 번 보내라
<my-web > my-was 통신>
ubuntu@host1:~$ docker container exec my-web ping -c 3 192.168.57.2
PING 192.168.57.2 (192.168.57.2) 56(84) bytes of data.
--- 192.168.57.2 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2055ms
- 우리의 목표는 ping 통신이 되는거지만, 아직 라우터 연결을 하지 않아 백엔드에서 프론트 간의 ping이 안 됨
- my-was > my-db (같은 백엔드 서버)
ubuntu@host1:~$ docker container exec my-was ping -c 3 my-db
PING my-db (192.168.57.3) 56(84) bytes of data.
64 bytes from my-db.back-net (192.168.57.3): icmp_seq=1 ttl=64 time=0.053 ms
64 bytes from my-db.back-net (192.168.57.3): icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from my-db.back-net (192.168.57.3): icmp_seq=3 ttl=64 time=0.121 ms
--- my-db ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2082ms
rtt min/avg/max/mdev = 0.043/0.072/0.121/0.035 ms
ubuntu@host1:~$ docker container exec my-was ping -c 3 192.168.57.3
PING 192.168.57.3 (192.168.57.3) 56(84) bytes of data.
64 bytes from 192.168.57.3: icmp_seq=1 ttl=64 time=0.048 ms
64 bytes from 192.168.57.3: icmp_seq=2 ttl=64 time=0.052 ms
64 bytes from 192.168.57.3: icmp_seq=3 ttl=64 time=0.774 ms
--- 192.168.57.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2052ms
rtt min/avg/max/mdev = 0.048/0.291/0.774/0.341 ms
- 같은 백엔드 서버 간은 ping이 됨
5. 확인 후 라우터 연결
- 프론트엔드 my-web 라우터 연결
ubuntu@host1:~$ docker network connect back-net my-web
ubuntu@host1:~$ docker container exec my-web route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.57.1 0.0.0.0 UG 0 0 0 eth1
192.168.57.0 * 255.255.255.0 U 0 0 0 eth1
192.168.58.0 * 255.255.255.0 U 0 0 0 eth0
<ping 연결 확인>
- my-web > my-was
ubuntu@host1:~$ docker container exec my-web ping -c 3 192.168.57.2
PING 192.168.57.2 (192.168.57.2) 56(84) bytes of data.
64 bytes from 192.168.57.2: icmp_seq=1 ttl=64 time=0.076 ms
64 bytes from 192.168.57.2: icmp_seq=2 ttl=64 time=0.123 ms
64 bytes from 192.168.57.2: icmp_seq=3 ttl=64 time=0.102 ms
--- 192.168.57.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2037ms
rtt min/avg/max/mdev = 0.076/0.100/0.123/0.020 ms
- my-web > my-db
ubuntu@host1:~$ docker container exec my-web ping -c 3 my-db
PING my-db (192.168.57.3) 56(84) bytes of data.
64 bytes from my-db.back-net (192.168.57.3): icmp_seq=1 ttl=64 time=0.059 ms
64 bytes from my-db.back-net (192.168.57.3): icmp_seq=2 ttl=64 time=0.037 ms
64 bytes from my-db.back-net (192.168.57.3): icmp_seq=3 ttl=64 time=0.076 ms
--- my-db ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2046ms
rtt min/avg/max/mdev = 0.037/0.057/0.076/0.017 ms
ubuntu@host1:~
'클라우드 + DevOps > Docker' 카테고리의 다른 글
Docker 네트워크 실습 :: NginX 리버스 프록시 구성 (0) | 2024.02.21 |
---|---|
Docker 네트워크 실습 :: DNS와 부하분산 설정 (0) | 2024.02.20 |
Docker 네트워크 관련 설정 명령어 모음 (0) | 2024.02.17 |
Docker 실습 :: Docker 이미지 수정과 적용 (0) | 2024.02.14 |
Docker 이미지 / 컨테이너 관리 및 모니터링 명령어 (0) | 2024.02.13 |