对docker原生端口映射的随记
来自三线的随记
Env Infomation
- kernel 3.10.0-957.el7.x86_64
- CentOS Linux release 7.6.1810 (Core)
- Docker Server Version: 19.03.8
[root@dx-poc-w03 ~]# docker run -itd --name docker-test -p127.0.0.1:2344:2344 --entrypoint=bash docker.elastic.co/beats/filebeat:7.6.0 6bb73a6bde431623e2ab0d9641e3b9b20c9b71c5bee133e99a97363889751d9e [root@dx-poc-w03 ~]# iptables-save | grep 2344 -A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 2344 -j ACCEPT -A POSTROUTING -s 172.17.0.2/32 -d 172.17.0.2/32 -p tcp -m tcp --dport 2344 -j MASQUERADE -A DOCKER -d 127.0.0.1/32 ! -i docker0 -p tcp -m tcp --dport 2344 -j DNAT --to-destination 172.17.0.2:2344 [root@dx-poc-w03 ~]# ss -nplt | grep 2344 LISTEN 0 4096 127.0.0.1:2344 *:* users:(("docker-proxy",pid=70509,fd=4)) [root@dx-poc-w03 ~]# docker stop docker-test docker-test [root@dx-poc-w03 ~]# ss -nplt | grep 2344
原生docker通过docker run 命令并且expose端口(-p) ,在container runing的时候相应的地址端口二元组会在节点上建立监听(监听进程为 docker-proxy)
容器stop 或者Exited以后,相应的端口也会取消监听
同理,iptables相应的端口转发规则也只会在container 正常running的时候会建立