使用iptables为docker容器动态添加端口映射

1、将当前iptables的配置写入保存到/etc/sysconfig/iptables

2、保存

/etc/init.d/iptables sava

3、修改iptables配置(vi /etc/sysconfig/iptables):

在适当位置增加下面红色的三行,然后重启iptables即可。(30612 是容器对外提供服务的端口)

-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.17.0.10/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 9000 -j ACCEPT
-A DOCKER -d 172.17.0.117/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8080 -j ACCEPT
-A DOCKER -d 172.17.0.7/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 32095 -j ACCEPT
-A DOCKER -d 172.17.0.7/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 30612 -j ACCEPT
COMMIT
# Completed on Thu Mar  3 13:34:42 2016
# Generated by iptables-save v1.4.7 on Thu Mar  3 13:34:42 2016
*nat
:PREROUTING ACCEPT [267:19881]
:POSTROUTING ACCEPT [8:480]
:OUTPUT ACCEPT [8:480]
:DOCKER - [0:0]
-A PREROUTING -p tcp -m tcp --dport 32095 -j DNAT --to-destination 172.17.0.7:32095
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.17.0.10/32 -d 172.17.0.10/32 -p tcp -m tcp --dport 9000 -j MASQUERADE
-A POSTROUTING -s 172.17.0.117/32 -d 172.17.0.117/32 -p tcp -m tcp --dport 8080 -j MASQUERADE
-A POSTROUTING -s 172.17.0.7/32 -d 172.17.0.7/32 -p tcp -m tcp --dport 32095 -j MASQUERADE
-A POSTROUTING -s 172.17.0.7/32 -d 172.17.0.7/32 -p tcp -m tcp --dport 30612 -j MASQUERADE
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 9000 -j DNAT --to-destination 172.17.0.10:9000
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 54321 -j DNAT --to-destination 172.17.0.117:8080
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 32095 -j DNAT --to-destination 172.17.0.7:32095
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 30612 -j DNAT --to-destination 172.17.0.7:30612
COMMIT
# Completed on Thu Mar  3 13:34:42 2016

最后:

重启iptables服务

# centos6.x
service iptables restart

# centos7.x
systemctl restart iptables.service

原文地址:https://www.cnblogs.com/liugp/p/11399178.html

时间: 2024-10-31 20:44:46

使用iptables为docker容器动态添加端口映射的相关文章

重启服务器后Docker容器暴露的端口外网突然访问不了!!

*:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !important; } .markdown-body a:not([href]) { color: inherit; text-decoration: none; } .markdown-body .anchor { float: left; padding-right: 4px; margin-left: -2

docker的网络、端口映射和容器间通信

docker作为服务器内部的一个容器单位,对外的通信也就有了困难.这里提供了一些几个解决方案. 1.Docker独立IP 简单说就是配置独立的网桥,分配给docker IP cd /etc/sysconfig/network-scripts/ vi ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet BRIDGE="br0" BOOTPROTO=static vi ifcfg-br0 DEVICE="b

docker 容器网络绑定端口部署

docker网络基础 一. 1. 默认情况下容器可以建立到外网网络的链接但是外网网络无法连接到容器 docker允许通过外部访问容器或容器互联的方式来提供网络服务 外部访问容器可以在容器中运行网络应用可以通过-p 或 -P参数来指定端口隐射. -P:默认指定端口  -p自定义指定端口 2.dicker容器启动时会在宿主机上创建一个名为docker0的虚拟网络接口docker启动       一个容器时会根据docker0的网段划分容器的ip.每个docker容器是docker0的网关从     

iptables、防火墙配置、NAT端口映射

一,配置一个filter表放火墙 (1)查看本机关于IPTABLES的设置情况 [[email protected] ~]# iptables -L -n Chain INPUT (policy ACCEPT) target       prot opt source                 destination Chain FORWARD (policy ACCEPT) target       prot opt source                 destination

mac中使用docker添加端口映射

mac中使用docker实际是使用boot2docker先通过virtualbox启动了一个linux虚拟机"boot2docker-vm",这样启动后,再从docker中启动container,即使你添加了端口映射,主机也是访问不到的,这是因为这个端口映射是将virtualbox启动的虚拟机映射到container的端口. 此时你需要给virtualbox启动的虚拟机添加路由,例如,你要添加3306端口: 终端中先 ?VBoxManage modifyvm "boot2do

使用iptables给内网服务器做端口映射

iptables filter 表案例 iptables的语法规则iptables -nvL 查看规则iptables -F 清空规则iptables save 保存写入的规则iptables -Z 清空iptables的数据流计数器iptables -A INPUT -s 源IP -p tcp --sprot 来源端口 -d 目标IP --dport 目标端口 -j DROP/ACCEPT 指定放行的数据流和端口iptables -I/-A/-D INPUT -s 源IP -j DROP 添加

CentOS7 虚拟机docker安装宝塔及端口映射

启动docker服务 systemctl start docker 列出所有的容器 ID docker ps -aq [[email protected] ~]# docker pull centos [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx latest 5a9061639d0a 5 days ago 126 MB docker.io/centos late

给服务器添加端口映射服务

portmgr.c 1 #include <stdio.h> 2 3 #define IPTABLES "/sbin/iptables" 4 5 int main(int argc, char *argv[]) 6 { 7 char *iptables_argv[512] = { 8 IPTABLES, "-tnat" 9 }; 10 int i = 2; 11 if (argc >= 2) { 12 switch(*argv[1]) { 13 c

【随笔】mOnOwall添加端口映射

mOnOwall是一个完整的嵌入防火墙软件包,当与一台嵌入个人电脑一起使用时,在免费使用自由软件的基础上,提供具备商业防火墙所有重要特性(包括易用). 这里通过配置mOnOwall的端口设置映射功能,以使外网通过指定端口访问内网主机. 公网IP: 214.132.32.24 内网主机ip: 192.168.1.23 内网主机ssh端口:22 目的:通过ssh远程登录内网主机 打开进入monowall设置界面,点击左边栏 进入防火墙NAT设置界面,点选Inbound,然后点击下方的来添加一个Inb