使Docker提供对外服务的网络配置(桥接与端口)

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

前沿:

        docker 启动容器后,如何对外服务?   希望大家看了这篇文章后有些帮助。 


docker的有关网络问题没怎么搞清楚,请教了下邓磊同学,感谢 !


Docker生成的容器,一般会给你生成一个ip地址,这个ip地址是和docker0的地址是一个ip段的。


通过ip a命令 ,咱们可以看到docker0的ip和子网的范围 。 大家会发现除了docker0 还有一个vethc 数字的网卡,这个也算是虚拟网卡绑在桥接上的。

wKiom1PsaNfirzmfAAU8lwiyqYc483.jpg


我们创建一个容器,并且暴露22端口。 这个22端口的意思是对外暴露了22端口,系统会从49000-49900端口范围内给你分配一个端口。



docker run 指明端口有两种的方式,一种是-P ,他是识别容器里的dockerfile声明的端口关系。 还有一个是-p 这个是小屁屁,他就可以直白点了。  比如 -p  6379,是对外暴露了6379。   6379:6379 是外面是6379,里面也是6379 。

原文:http://rfyiamcool.blog.51cto.com/1030776/1540074


root@dev-ops:~# docker run -d  -p 22 --name="redis_test" rastasheep/ubuntu-sshd 

ed7887b93aa452323ee96339d889bebc36ad25a479c660ba89e97d2c5869f105

root@dev-ops:~# 

root@dev-ops:~# docker ps -a

CONTAINER ID        IMAGE                           COMMAND             CREATED             STATUS              PORTS                   NAMES

ed7887b93aa4        rastasheep/ubuntu-sshd:latest   /usr/sbin/sshd -D   7 seconds ago       Up 7 seconds        0.0.0.0:49153->22/tcp   redis_test          

root@dev-ops:~# 

原文:http://rfyiamcool.blog.51cto.com/1030776/1540074

wKioL1PsaqiC9a-XAAdUMGvZeLM044.jpg


原来我以为docker是写了一个socker做了端口的映射功能,看文档才知道,他就是调用了一个 iptable的端口映射。 

iptables -t nat -L

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
原文:http: //rfyiamcool .blog.51cto.com /1030776/1540074
Chain PREROUTING (policy ACCEPT)
target     prot opt  source                destination         
DOCKER     all  --  anywhere             anywhere             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  --  anywhere            !127.0.0.0 /8           ADDRTYPE match dst- type  LOCAL
 
Chain POSTROUTING (policy ACCEPT)
target     prot opt  source                destination         
MASQUERADE  all  --  localhost /16         !localhost /16        
 
Chain DOCKER (2 references)
target     prot opt  source                destination         
DNAT       tcp  --  anywhere             anywhere             tcp dpt:49153 to:172.17.0.2:22
root@dev-ops:~ #


有主机的ip,和容器的ip,那你还怕啥 !  想映射什么,自己映射。


1
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80


docker之间的容器默认是互通的,也就是两个容器可以互相的通信。 如果想控制容器之间的通信,可以利用 docker  的 --icc 属性控制。


wKioL1Psd2HwJdOfAAQ3awyJ1Gg532.jpg


原文:http://rfyiamcool.blog.51cto.com/1030776/1540074


好了,我们在说下桥接的方式。 如果你觉得麻烦,每次都需要做端口的映射,或者是修改映射,那你可以考虑下用桥接网卡的模式。 貌似一些论坛上的牛人不太推荐用桥接,估计是为了安全的问题。  毕竟nat的话,对外是安全的,对外的服务也只是暴露出端口而已。  而桥接的话,会暴露ip出去。 


原文:http://rfyiamcool.blog.51cto.com/1030776/1540074

暂停docker服务

sudo service docker stop


用ip命令使docker0网卡down掉

sudo ip link set dev docker0 down


删除网卡

sudo brctl delbr docker0


创建一个网卡 名字是bridge0

sudo brctl addbr bridge0


ip地址和子网

ip addr add 192.168.5.1/24 dev bridge0


启动桥接网卡

sudo ip link set dev bridge0 up


写入配置

echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker


sudo service docker start


这样的桥接方式有个问题就是,他的ip是docker自己检测搞给你的,貌似不是dhcp获取空闲的,然后赋予给容器的。我昨天再次做测试的时候,有一个ip被占用的,但是他还是分喷给了一个被占用的ip地址。 这样的话就冲突了。 如果ip端和公司内部或者是线上重叠的话,可能会造成ip地址的冲突。 桥接后遇到ip地址冲突是个人结论 ,也可能是我这边环境导致的这类问题!




 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1540074,如需转载请自行联系原作者


相关文章
|
26天前
|
存储 安全 网络安全
云端防御策略:融合云服务与网络安全的未来之路
在数字化浪潮的推动下,企业纷纷转向云计算以获取灵活性、可扩展性和成本效益。然而,随之而来的是日益复杂的网络威胁,它们挑战着传统的安全边界。本文将探讨如何通过创新的云服务模型和先进的网络安全措施来构建一个既可靠又灵活的安全框架。我们将分析云计算环境中的关键安全挑战,并提出一系列针对性的策略来加强数据保护,确保业务连续性,并满足合规要求。
28 2
|
1月前
|
前端开发 关系型数据库 MySQL
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
|
1月前
|
弹性计算 负载均衡 网络协议
这种情况可能是由于阿里云的API服务出现了短暂的故障或者网络波动导致的
【2月更文挑战第20天】这种情况可能是由于阿里云的API服务出现了短暂的故障或者网络波动导致的
62 1
|
1月前
|
存储 Linux 数据安全/隐私保护
如何在本地Docker中部署MinIO服务并实现远程访问管理界面
如何在本地Docker中部署MinIO服务并实现远程访问管理界面
182 0
|
1月前
|
弹性计算 关系型数据库 MySQL
阿里云ECS使用docker搭建mysql服务
阿里云ECS使用docker搭建mysql服务
152 1
|
2天前
|
运维 安全 Cloud Native
安全访问服务边缘(SASE):网络新时代的安全与连接解决方案
SASE(安全访问服务边缘)是一种云基安全模型,结合了网络功能和安全策略,由Gartner在2019年提出。它强调身份驱动的私有网络、云原生架构和全面边缘支持,旨在解决传统WAN和安全方案的局限性,如高延迟和分散管理。SASE通过降低IT成本、提升安全响应和网络性能,应对数据分散、风险控制和访问速度等问题,适用于移动办公、多分支办公等场景。随着网络安全挑战的增加,SASE将在企业的数字化转型中扮演关键角色。
|
8天前
|
存储 安全 测试技术
网络奇谭:虚拟机中的共享、桥接与Host-Only模式解析
网络奇谭:虚拟机中的共享、桥接与Host-Only模式解析
15 0
|
13天前
|
关系型数据库 MySQL 数据安全/隐私保护
使用docker快速搭建wordpress服务,并指定域名访问
通过以上步骤,你可以使用Docker快速搭建WordPress服务,并通过指定的域名进行访问。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
19 1
|
13天前
|
Ubuntu 网络安全 数据安全/隐私保护
ubuntu篇-配置FTP服务,本机和docker安装
通过以上步骤,你可以在Ubuntu上配置FTP服务,无论是本机安装还是Docker内安装,都可以提供FTP文件传输服务。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
20 1
|
21天前
|
缓存 网络协议 数据库连接
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
20 0