docker网络

docker网络

docker的默认模式:桥接模式

桥接模式 部署好docker服务。启动之后,创建一个虚拟网桥,docker0

这是一个虚拟的网络设备,类似于交换机。

每一次运行容器之后,docker0就会从网段当中分配一个ip地址给这个容器。

容器与主机之间通信:提供桥接模式进行通信。

容器与容器之间通信:多个容器都在同一网段,都在同一网桥,可以通过自己的IP地址进行通信。

桥接模式:连接两个不同网络断的设备,共享通信的一种方式。

  1. 17 路由器 192.168

基于mac地址转发数据帧。

当172.17————192.168 桥接设备查看目标的mac地址

ARP广播,如果在mac地址表,桥接设备直接把数据帧转发目标的相应接口

如果不再,ARP广播,所有接口都会收到数据报文,有则响应,无则丢弃。

桥接模式在物理和数据链路层上工作,学习和转发mac地址,用于局域网内部的连接和扩展。

vethpair方式生产一个对应容器的虚拟网卡。

docker网桥是宿主机虚拟出来的,并不是真正的网络设备。外部是没有办法通过寻址找到的。

也是客户端是无法直接访问容器的IP地址。

如果希望外部网络能够访问,要通过映射容器的端口到宿主机。

容器要保持一直运行,必须要指定有一个运行的程序。nginx镜像当中声明好了运行程序。

nginx -g "daemon off" 保持nginx一直在后台运行。不加d,前台运行展示运行结果

桥接模式的宿主机和容器之间的端口映射,实际上是做了nat地址转换,容器的私有ip映射到主机的ip上。

从而实现容器与外部网络的通信,隐藏了容器内部的真实IP地址。

docker基于桥接模式的网络类型:

1、host模式:容器不会虚拟出自己的网卡,也不会配置自己的ip,容器全部使用宿主机的ip和端口。

端口不重复的类型的应用,docker本身是单节点模式,使用与部署单个服务的应用程序。

#新版的命令
[root@docker1 ~]# docker run -itd --name nginx1 --network host nginx:1.22
#老版的命令
[root@docker1 ~]# docker run -itd --name nginx2 --net=host nginx:1.22
#host模式使用的是宿主机的端口和IP地址,一但宿主机的端口被占用,容器就起不来

2、container模式:容器和容器之间共用一个network namespace,不是和宿主机共享。

新创建的容器也不会有自己的网卡,也不会配置自己的ip,而是和一个容器共享ip、端口。除了网络之外,其他的比如文件系统等等都是隔离的。

[root@docker1 ~]# docker run -itd --name test1 centos:7 /bin/bash
[root@docker1 ~]# docker run -itd --name test2 --network container:test1 centos:7

3、none模式:

创建容器之后,容器有自己的网络命名空间,但是不会进行任何网络的配置。

没有网卡,没有ip,也没有端口。只有本地的lo的回环网络,没有办法进行联网。网络是封闭的,一般用于内部调试。

[root@docker1 ~]# docker run -itd --name nginx1 --network none nginx:1.22
[root@docker1 ~]# docker inspect nginx1
                    "Gateway": "",
                    "IPAddress": "",

4、自定义网络

自定义网络,和桥接模式一样,只不过我们可以自定义容器的网段和给新创建的容器指定IP地址。

只有自定义网络可以在创建容器的时候指定IP地址。

#创建自定义网络
[root@docker1 ~]# docker network create --subnet=172.111.0.0/16 mynetwork1          #创建自定义网络,不指定网卡的名称
​
[root@docker1 ~]# docker network create --subnet=172.111.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork2     #创建自定义网络,并指定网卡名称
[root@docker1 ~]# docker run -itd --name nginx5 --net mynetwork2 --ip 172.111.0.10 -p 88:80 nginx:1.22
014610edd457778979319636938d76484e8aa76d2d491f74bb83326db6011743
​

1、docker的网络模式就是桥接模式

host 宿主机共享网络 常用

container模式 容器之间共享

none模式 无网络模式,单机模式

自定义网络 只有自定义网络可以在创建容器的时候指定ip地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值