docker 使用到的 iptables 内容

安装并启动 docker 服务后, 服务器上自动增加 docker 相关的 iptables 规则和链, 他们的作用是什么

说明

在服务器上安装 docker , 并启动 docker.service 后会发现, iptables-save 命令的输出增加一些 DOCKER 相关的内容.

 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
[root@c7u3test1 ~]# iptables-save 
# Generated by iptables-save v1.4.21 on Sun Aug 25 05:05:17 2019
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1:128]
:POSTROUTING ACCEPT [1:128]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
COMMIT
# Completed on Sun Aug 25 05:05:17 2019
# Generated by iptables-save v1.4.21 on Sun Aug 25 05:05:17 2019
*filter
:INPUT ACCEPT [23:1592]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [12:1152]
:DOCKER - [0:0]
:DOCKER-ISOLATION - [0:0]
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER-ISOLATION -j RETURN
COMMIT
# Completed on Sun Aug 25 05:05:17 2019

当使用-p参数拉起一个容器时, 查看 iptables-save 输出会发现多了一些规则, 其中的 IP 地址就是新拉起容器的地址

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[root@c7u3test1 ~]# docker run -d -p 5000:5000 busybox sleep 10000
e4d5f73de95ed178fb24b5068ded0478d957d94d88a3906d7a08c89aab79f339
[root@c7u3test1 ~]# docker container ps -q
e4d5f73de95e
[root@c7u3test1 ~]# iptables-save 
# Generated by iptables-save v1.4.21 on Tue Mar 29 11:06:18 2022
*nat
......
-A POSTROUTING -s 172.17.0.2/32 -d 172.17.0.2/32 -p tcp -m tcp --dport 5000 -j MASQUERADE
......
*filter
......
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 5000 -j ACCEPT
......

iptables的介绍请看这里: iptables 简述

这篇文章简述iptablesdocker 中常见的一些功能.

dasfdsadf

updatedupdated2022-03-132022-03-13