第1节 Docker四种网络模式
docker的5种网络模式
1、none:没有网络
2、bridge:桥接
3、container:容器
4、host:主机
5、network-name,这一种依赖于前4种
1、Bridge桥接模式
也是默认模式,类似Vmware的NAT模式
docker安装了默认给你优化了ip-forward=1,如果是k8s的containerd也许早期是没有的,可能就需要手动调整这些内核参数。
docker network ls
docker inspect bridge # 可以查看网关
iptables -vnL -t nat # 配合docker port xxx 可见PREROUTING里的端口暴露
一些网段配置👇
vim /etc/docker/daemon.json
{
"registry-mirrors":[
"https://docker-hub.iwgame.com",
"https://ustc-edu-cn.mirror.aliyuncs.com"
],
"hosts":["tcp://0.0.0.0:2375","fd://"], # /lib/systemd/system/docker.service里需要删掉和这里的重复配置
"bip":"192.168.100.1/24",
"fixed-cidr":"192.168.100.128/30",
"fixed-cidr-v6":"2001:db8::/64",
"mtu": 1500,
"default-gateway":"192.168.100.2",
"default-gateway-v6":"2001:db8:abcd::89",
"dns":["1.1.1.1","8.8.8.8"]
}
开始创建容器,顶多4个咯,因为/30嘛
第五个果然报错了
理解下两个GW
这个DefaultGatewayIPv4是默认网关,这里改成100.2,就不会走100.1了,要注意。
Host模式
类似于Vmware的桥接模式
容器里的网卡就是宿主机的网卡了,多个容器之间需要区分端口了。
也不存在端口暴露一说,因为直接就是宿主IP的端口了。
然后你想让容器性能非常好的时候,可以考虑使用host模式,因为没有NAT转发的步骤。
看看这个,完全就是宿主上所有网卡都看的到了
同样可以inspect看看,不过host这是宿主的网络,所以没啥可看的
None模式
none不是说一个网卡都没有,还是有一个lo口的
自己访问自己还是可以的
Container模式
实验开始
1、run一个正常的容器,也就是bridge
网络情况:
2、再run一个Container网络模式的,容器
不能说一摸一样,应该说就是同一个。能理解我这句话的意思吗O(∩_∩)O,一摸一样是两个东西 一样~,哈哈哈
然后,只是网络共用,其他文件都是隔离,也就是其他命名空间都是独立隔离的。
scp 才是基于ip的,docker cp是基于容器名的。
因为docker run --network container:c1 --name c2 这样c1和c2就是一个网卡,所以端口监听要错开,而且只能由被引用方c1来暴露。c2 c3这些引用方不能暴露端口的,run -P直接报错:
然后因为是共用的一个网卡,所以只要container:c1挂上后,c2也一样可以修改网卡的
c1修改网卡
此时c2容器里自然被改了
然后此时作用引用c1的c2创建可以影响c1,但是c2退出不会影响c1,c3引用c1同样之前c2创建的ip还在
如果c1这个被引用的源头没了(exit了,stop了);注意即使start up了也没用了,c2 c3这些引用的也不会自动出现c1的接口的。
引用c1的其他容器的网卡也就没了
案例:wordpress
正常 wordpress和mysql,一般先启用mysql,后启用wordpress,如果反了,就要会wordpress网页打不开,等mysql后起来,才能打开。 所以是无所谓的,大不了等等就行了。
但是如果使用container模式的网络,就要先启用wordpress,我来试一下啊
docker run -d -p 80:80 --name wordpress -v /data/wordpress:/var/www/html --restart=always wordpress:php8.3-apache
docker run --name db001 --network container:wordpress -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=123456 -d -v /data/mysql:/var/lib/mysql --restart=always mariadb:11.4.2
先运行wordpress:
然后就不知道填啥了都:
然后运行DB
因为运行的是--network contaner:wordpress,所以就是共用的wordpress容器的网卡,所以下图直接填写127.0.0.1就行了:
但是如果先启动db再启动wordpress就不行了
因为作为引用方,是不可以暴露端口的。
其实可以这样
这样wordpress和db在一个网卡上,虽然是两个容器。这样通信效率更高了。
如果遇到报错:
👆这是由之前实验数据导致的,它这个报错都是establishing,tcp连接了都,都是由db信息了。
以上就是docker网络的四种模式:
closed就是none模式;就是单机不与外界沟通的模式。
bridege是默认模式;就是桥接到默认的比如docker0网桥上的,自然同一个做SNAT的。
joined就是container模式;就是jion别的容器的网卡。
opencontainer就是host模式,桥接道网卡的;host就是主机一个网段的意思,所以叫host。
有感:
用神之法:就是群星拱之,神冷静观之,不受群星直接影响,要过一个空白地(a space),这个空白地就是自由所在,也是成长所在。廉贞+武官入命的人一定要学会此法;否则容易被其强烈影响,该影响若被某个化忌的大运结合就很危险。或者某宫杀星落陷再结命主廉贞+武官,同样会很强烈。或者孤星坐命的人一样。
“Between stimulus and response there is a space. In that space is our power to choose our response. In our response lies our growth and our freedom.”
— Often attributed to Steven Covey or Viktor E. Frankl
七杀临身的解法:就是无为而治,用习惯来实现成果,化为习惯也就是终身制的努力了。
关于无为:其实是润物细无声的意思,就是将行动化为细小的执行动作,正所谓日积跬步。
有句话叫:弱者道之用,就是这个道理:其意思就是要徐徐图之,不可用力过猛,弱者就是无为,就是慢慢来的意思,很多感情上、事业上、生活上的用力过猛的开始往往都没有能够达到最终的一个好的结局。无为不是真的不作为,而是表面上看起来没有特别大的动作,润物细无声,其实它一直都在,不曾放弃,只是以柔弱的方式存在,这样不会激发起反作用力。正所谓反者道之动,事物都是走向它的对立面的,你想要一个好的结果,只有弱者道之用才能不激发这个反向趋势。
地空用法:化煞为用,空灵之性,弱化群星对神的影响。要知道吉星也好杀星也罢,凶吉正如太极两仪,正如64卦我想高人应该选择的去用的。物尽其用也是这个道理吧。
神在哪:两眼之间其后,菩提树(大脑)下。
心神:心和神,正如心性和神,感性和理性的关系。心代表命盘和群星;神的强大就代表能否化盘为用,而不是被盘掌控。以神控盘,神清,神清则自在。以心牵神,神弱,神弱则堕入红尘欲望。但也要尊重心,自重就是尊重自己,不可被过度的理性变得僵硬固化,难....啊。
炼神之法:是不是如呼吸一样,长长久久,绵绵不绝,去感受其所在空间。
实操之法:当心里坠坠难安时,将心神聚集收敛,也就是将意念收集在两眼之间,菩提树下。也可以在心脏之处,但是菩提树下为佳。 大概是先看心,后看神的然后持续在神,能够体会热感。