Nefilter : 방화벽
NAPT(Network Address Translation Table) : 사설ip가 공인ip로 주소변환
dnat : 목적지 주소가 바뀜
snat : 출발지 주소가 바뀜
source, desti(8.8.8.8), data => snat.....
netfilter 를 지나면서, ip 가 바뀜, 구글까지 패킷이 감
dnat
동일 포트 번호를 사용하는 컨태이너가 2개 이상이라면???
물리적 콤퓨터의 port 를 서로 다르게 해서, 식별해야 한다.
예) -p 옵션으로 정함
docker ryn -d --name www2 -p 8080:80 nginx
-p 8081:80
-p 8082:80
root@template:~# docker run -d --name www1 -p 8080:80 nginx
43e19db0b572fd34f7d699a8a1fe3ff4d8ced4b3340cfb837d332cbc0ae2975a
넷필터 방화벽 3요소.
가. 필터 테이블 (이게 디펄트)
나. NAT 테이블
다. 맹글 테이블
각 테이블은 체인이 있다.
NAT 테이블 보는법
root@template:~# iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0
MASQUERADE tcp -- 172.17.0.2 172.17.0.2 tcp dpt:80
Chain DOCKER (2 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 to:172.17.0.2:80
룰들이 구멍안에 들어감.
PREROUTING : 내부로 들어오면
POSTROUTING : 외부로 나갈때(SNAT)
웹브라우저 기동후 변화 확인
root@template:~# docker run -d --name www2 -p 8081:80 httpd
root@template:~# iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0
MASQUERADE tcp -- 172.17.0.2 172.17.0.2 tcp dpt:80
MASQUERADE tcp -- 172.17.0.3 172.17.0.3 tcp dpt:80
Chain DOCKER (2 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 to:172.17.0.2:80
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8081 to:172.17.0.3:80
1. 동일 host
2. 기본네트웍(docker0)
--link 옵션(컨테이너에 ip 대신 이름을 사용)
도커와 쿠버는 내부적으로 DNS가 있다.
컨테이너를 정지시키면...사용하던 IP 는 반납되고, 새로 생성되는 컨테이너에게 할당됨
root@template:~#
root@template:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c68a12312be centos "/bin/bash" 42 seconds ago Up 41 seconds web
5e171ed84d6e centos "/bin/bash" About a minute ago Up About a minute db
root@template:~#
root@template:~#
root@template:~#
root@template:~#
root@template:~#
root@template:~# docker inspect db | grep IPAddr
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
root@template:~# docker inspect web | grep IPAddr
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",
root@template:~#
root@template:~#
root@template:~#
root@template:~# docker exec -it web /bin/bash
[root@1c68a12312be /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 03:17 pts/0 00:00:00 /bin/bash
root 15 0 0 03:19 pts/1 00:00:00 /bin/bash
root 28 15 0 03:19 pts/1 00:00:00 ps -ef
[root@1c68a12312be /]# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 db 5e171ed84d6e
172.17.0.3 1c68a12312be
--link 옵션을 쓰면 ip가 바뀌어도 자동 갱신된다.
root@template:~#
root@template:~# docker image prune -a ===> 이미지 다 지움
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: nginx:1.12
untagged: nginx@sha256:72daaf46f11cc753c4eab981cbf869919bd1fee3d2170a2adeac12400f494728
deleted: sha256:4037a5562b030fd80ec889bb885405587a52cfef898ffb7402649005dfda75ff
deleted: sha256:8b8d76e24d92203bae8c1184f5c94f607c92e87ff5f836780f0d1301e4073111
'Infra > Docker_K8S' 카테고리의 다른 글
Docker 테스트 1 (0) | 2022.07.30 |
---|---|
HP교육센터-도커 네트워크 종류 (0) | 2022.07.30 |
nginx tomcat 연동하기 (0) | 2022.04.01 |
Docker 설치하기 (0) | 2021.12.07 |
도커 설치후, VS Code 에서 인식한 플러그인들 (0) | 2021.06.17 |
댓글