jmeter怎么编写socket脚本
338
2022-10-27
Docker 学习笔记 - 网络的端口映射
当我们在Docker的宿主机里面启动Docker的时候,他们之间是可以互相通信的,那么外界是如何访问容器的呢?看看下面这张简图
宿主机上的真正网卡是eth0,他的IP是 10.0.0.11, 当我们配置了docker之后,他会自动生成一个虚拟的网卡 docker0, IP是 172.17.0.1,这个子网是docker容器之间通讯的子网,所有的docker容器会自动生成一个vethxxx的虚拟网卡,IP地址都是172.17.0.0/24这个范围,他们之间通过一个 docker0的网桥虚拟机进行联系。那么外界如何来访问172.17.0.0/24这个内网系统呢? 我们通过DNAT 端口映射来实现。他会把eth0的宿主机的IP和端口和 对应的容器的IP和端口进行映射。 这个映射是通过Linux的防火墙iptables来实现的,不过我们不需要手动配置,而是在启动run命令 的时候用-p选项指定即可
ifconfig查看网卡
[root@ip-172-16-1-150 ec2-user]# docker run -d -p 8000:80 nginx
6bf871a60c8110f3389db0a02a5ff45f8713c157f9cb5fa946e40638acf494a3
[root@ip-172-16-1-150 ec2-user]# ifconfig
docker0: flags=4163
iptable自动配置端口转发的规则
[root@ip-172-16-1-150 ec2-user]# iptables -t nat -L -n 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 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 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 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:8000 to:172.17.0.2:80
下面看个简单的实例
我的宿主机是一个AWS 的EC2 实例,作为测试,我分配了两个private IP地址给这个服务器,分别是172.16.1.150和 172.16.1.120
然后我给eth0 网卡分配一个新的IP地址
ifconfig eth0:0 add 172.16.1.120/24 up
这样我可以通过两个IP来访问不同的容器。
[root@ip-172-16-1-150 ec2-user]# docker run -d -p 172.16.1.120:80:80 nginx 3c2fe5b1f1e78abc522417bc05668317d18f7e18ba3779e06777238438c1210c [root@ip-172-16-1-150 ec2-user]# docker run -d -p 172.16.1.150:80:80 ghost:alpine 97782eed76f0b50de459dd3789e58155bd600138dc3d1c433567bcceea310c87 [root@ip-172-16-1-150 ec2-user]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 97782eed76f0 ghost:alpine "docker-entrypoint.s…" 7 seconds ago Up 6 seconds 172.16.1.150:80->80/tcp, 2368/tcp festive_hermann 3c2fe5b1f1e7 nginx "/docker-entrypoint.…" 20 seconds ago Up 19 seconds 172.16.1.120:80->80/tcp laughing_kalam [root@ip-172-16-1-150 ec2-user]#
测试一下, 成功
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~