Docker 网络

1. Docker 网络
1.1 Docker 网络模式
  使用 Docker 时,宿主机和容器内系统、容器和容器之间都需要网络连接,必须要考虑容器和宿主机、容器和容器之间的网络连接方式,因此了解 docker 的网络模式对正确使用 docker 非常重要。
  Docker 启动后,它默认会创建三个网络,使用 docker network ls 命令可以查看这些网络。
  命令:docker network ls
  可以看到 docker 自动创建了 bridge,host 和 none 3 种网络模式,默认情况下,使用的是 bridge 模式。
  另外,用户还可以创建 Container 网络模式和自定义网络模式。在实际应用中,通过这 5 种网络模式就可以实现:
(1)容器间的互联和通信
(2)容器和宿主机的通信以及端口映射
(3)容器 IP 变动时,可以通过服务名直接网络通信而不受到影响。
  Docker 中的网络接口默认都是虚拟的接口。对于本地系统和容器内系统来说,虚拟接口跟一个正常的以太网卡相比,并无区别。
 
1.2 bridge(桥接模式)
1.2.1 bridge 的概念
bridge 模式是 docker 默认的,也是最常使用的网络模式。当 Docker 服务启动时:
 主机上创建一个名为 docker0 的虚拟网桥,并选择一个和宿主机不同的 IP 地址(172.12.0.1)和子网(172.12.0.0/16)分配给 docker0 网桥;
 当创建一个容器时,docker 也会为该容器创建独立的网络环境,保证容器内的进程使用独立的网络环境;
 通过宿主机上的 docker0 网桥,实现容器之间、容器与宿主机之间乃至外界进行网络通信。
 
1.2.2 bridge 模式的查看命令
 查看 docker0 的相关信息
命令:docker network inspect bridge
 使用 bridge 网络模式
创建容器时,使用“--network=bridge”,参数表示使用 bridge 网络模式,该参数可以不写,默认情况下就是使用 bridge。
命令:docker run --network=bridge
 查看一个容器的网络信息
如:创建一个 redis 容器 r1,使用以下命令,可以查看 r1 的网络信息。
命令:docker inspect r1
  宿主机能访问 docker 容器,就是因为有 docker0 这个虚拟网卡。如果宿主机外的机器想访问容器,只能够先访问宿主机,再使用端口映射来访问,即将容器的端口与宿主机的端口进行映射,供外面的机器访问。
 
1.3 host-主机模式
  如果启动容器的时候使用 host 模式,那么这个容器将不会获得独立的网卡名称空间,那是和宿主机共用一个 Network Namespace;容器也不会模拟除自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。但是,容器的其他方面,如文件系统,进程列表等还是和宿主机隔离的。
  host 模式下,容器与宿主机的 IP 一样,端口号不同。
 使用 host 网络模式
创建容器时,使用“--network=host”参数表示使用 host 网络模式。
命令:docker run --network=host
 
1.4 none-无网络模式
  none 无网络模式下,容器有独立的 network namespace,但不对其进行任何网络设置。该模式实际上是关闭了容器的网络功能,容器不能联网。
 
 
 
posted @ 2023-04-05 14:22  Linqylin  阅读(45)  评论(0编辑  收藏  举报