Docker网络配置

发布时间:2024年01月17日

网络相关

子网掩码

互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。
IP 地址在设计时就考虑到地址分配的层次特点,将每个 IP地址都分割成网络号和主机号两部分,以便于IP 地址的寻址操作。
子网掩码是 “255.255.255.0” 的网络:
最后面一个数字可以在 0~255 范围内任意变化,因此可以提供 256 IP 地址。但是实际可用的 IP
址数量是 256-2 ,即 254 个,因为主机号不能全是 “0” 或全是 “1”
子网掩码是 “255.255.0.0” 的网络:
后面两个数字可以在 0~255 范围内任意变化,可以提供 2552 IP 地址。但是实际可用的 IP 地址数量
2552-2 ,即 65023 个。
IP 地址的子网掩码设置不是任意的。如果将子网掩码设置过大,也就是说子网范围扩大,那么,根
据子网寻径规则,很可能发往和本地主机不在同一子网内的目标主机的数据,会因为错误的判断而
认为目标主机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正
确到达目标主机,导致网络传输错误;如果将子网掩码设置得过小,那么就会将本来属于同一子网
内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负
担,造成网络效率下降。
因此,子网掩码应该根据网络的规模进行设置。如果一个网络的规模不超过 254 台电脑,采用
“255.255.255.0” 作为子网掩码就可以了,现在大多数局域网都不会超过这个数字,因此
“255.255.255.0” 是最常用的 IP 地址子网掩码;假如在一所大学具有 1500 多台电脑,这种规模的局
域网可以使用 “255.255.0.0”

网关

网关实质上是一个网络通向其他网络的 IP 地址。
路由器( Windows 下叫默认网关,网关就是路由,路由就是网关不要蒙)

规则

计算机的 IP地址由两部分组成,一部分为网络标识,一部分为主机标识,同一网段内的计算机网络部分相同,主机部分不同同时重复出现。
路由器连接不同网段,负责不同网段之间的数据转发,交换机连接的是同一网段的计算机。通过设置网络地址和主机地址,在互相连接的整个网络中保证每台主机的 IP地址不会互相重叠,即 IP地址
具有了唯一性。
在计算机网络中,主机 ID 全部为 0 的地址为网络地址,而主机 ID 全部为 1 的地址为广播地址
2 个地址是不能分配给主机用的。

?docker网络配置

当你安装了 docker, 它会自动创建 3 个网络,可以使用 docker network ls 命令来查看
当你运行一个容器的时候,可以使用 --network 参数来指定你的容器连接到哪一个网络。

bridge模式

Docker 进程启动时,会在主机上创建一个名为 docker0 的虚拟网桥,此主机上启动的 Docker容器会连接到这个虚拟网桥上
虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
docker0 子网中分配一个 IP 给容器使用,并设置 docker0 IP 地址为容器的默认网关。
在主机上创建一对虚拟网卡 veth pair 设备, Docker veth pair设备的一端放在新创建的容器中,并命名为 eth0 (容器的网卡),另一端放在主机中,以 vethxxx这样类似的名字命名,并将这个网络设备加入 到docker0网桥中。
bridge 模式是 docker 的默认网络模式,不写 --net 参数,就是 bridge 模式。
查看 bridge 信息
docker inspect bridge
打开容器
docker run -itd --net=bridge --name cname iname
查看 docker0 网桥
查看容器网络
ip addr
ifconfig

docker0就像是一个路由器,容器就像是路由器下的设备,它们在同一个网段内,可以互相ping通。?

?

外部访问
设置端口映射

?

docker run -itd --name bridge03 -p 8081:8080 spring:1.0
-p 参数可以出现多次,绑定多个端口号
docker run -itd --name bridge05 -p 8082:8080 -p 8083:8080 spring:1.0

host模式

如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个独立的 Network Namespace ,而是 和宿主机共用一个Network Namespace
容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。
但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。
docker run -itd --name host01 --net=host spring:1.0

?创建自定义网络(自定义IP)

先创建一个容器

再查看它的网段

?

给它设置一个固定ip

当然这个时候也可能创建失败

?

所以需要我们来指定ip段

最后再创建一个容器对它进行测试

?

最后测试通过就连接成功了?

文章来源:https://blog.csdn.net/2201_75516800/article/details/135641763
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。