Docker 入门篇(十 一)-- 网络配置总结

Docker 容器技术的核心优势之一是其轻量级的虚拟化和隔离性,而 Docker 网络则是实现容器间以及容器与外界通信的关键。以下是对 Docker 网络的关键知识点的总结。

一、 Docker 网络概述

Docker 网络允许容器进行相互通信以及与外部网络的连接。Docker 提供了多种网络类型和驱动程序来满足不同的网络需求:

  • Bridge: 默认网络类型,Docker 安装时创建的 docker0 网桥,适用于单个宿主机上的容器互联。
  • Host: 容器与宿主机共享网络栈,适用于需要容器与宿主机共享网络资源的场景。
  • Overlay: 跨多个 Docker 守护进程的分布式网络,适用于容器跨宿主机通信。
  • Macvlan: 为容器分配独立的 MAC 地址,使其可以直接连接到物理网络。

二、 Docker 网络配置

Docker 网络配置包括创建网络、连接容器到网络、配置 IP 地址等:

  • 使用 docker network create 创建新网络。
  • 使用 docker network connect 将容器连接到现有网络。
  • 使用 docker network inspect 查看网络详细信息。
  • 配置容器 IP 地址,可以是静态或动态分配。

1. 创建自定义网络

bash 复制代码
docker network create --driver bridge my-custom-network

这条命令会创建一个名为 my-custom-network 的自定义 bridge 网络。你可以通过 --driver 选项指定网络类型,例如 --driver overlay 来创建一个 overlay 网络。

2. 将容器连接到网络

bash 复制代码
docker run --network=my-custom-network -d my-image

或者,如果你已经有一个正在运行的容器,可以使用 docker network connect 命令将其连接到网络:

bash 复制代码
docker network connect my-custom-network container_id_or_name

3. 配置端口映射

如果你希望容器内的服务能够被宿主机或其他容器访问,可以通过 -p 或 --publish 标志配置端口映射:

bash 复制代码
docker run -p 8080:80 -d my-image

这条命令会将容器内的 80 端口映射到宿主机的 8080 端口上。

三、 容器与外部网络的通信

1. 端口映射: 使用 -p 参数将容器端口映射到宿主机端口,实现外部访问。

案例:运行容器,并将容器的 80 端口映射到宿主机的 8080 端口:

bash 复制代码
docker run -d -p 8080:80 --name my-web-app-container my-web-app

2. NAT 规则: Docker 使用 iptables 规则进行网络地址转换,允许容器访问外部网络。

案例:如果宿主机有防火墙,需要添加规则以允许外部流量通过映射的端口:

bash 复制代码
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

3.使用宿主机的网络

1. host 模式简介

在 host 网络模式下,容器不会获得独立的网络命名空间,而是直接使用宿主机的网络接口。这意味着容器内的进程可以直接看到宿主机的所有网络接口,包括 IP 地址和端口。因此,容器可以直接访问宿主机上的网络资源,无需进行端口映射或额外的网络配置。

2. 配置 host 模式

要在 Docker 中配置 host 模式,只需在运行容器时指定 --network="host" 选项即可。以下是具体的操作步骤:

运行容器:

使用 docker run 命令运行容器,并通过 --network="host" 参数指定网络模式为 host。例如:

bash 复制代码
docker run --network="host" -itd --name mycontainer myimage

其中,-itd 是组合参数,表示以交互模式运行容器,并分配一个伪终端,同时在后台运行容器。--name 用于指定容器的名称,myimage 是要运行的容器镜像名称。

3. 验证配置:

容器运行后,可以通过 docker exec 命令进入容器内部,使用如 ip addr 或 ifconfig(取决于容器内的系统)等命令查看网络接口,验证容器是否成功使用了宿主机的网络。

参考文献:

https://blog.51cto.com/u_14129797/5201566

相关推荐
橘颂TA18 分钟前
【Linux 网络】从理论到实践:IP 协议的报头分析与分段技术详解
linux·运维·服务器·网络·tcp/ip
羱滒19 分钟前
Docker Compose + Nginx + 后端服务运行环境搭建全流程指南(redis、mongdb、nginx、nacos-registry)
redis·nginx·docker·docker-compose
^ω^。19 分钟前
Docker核心技术原理与数据持久化全面解析
docker
那就回到过去21 分钟前
PIM-DM嫁接机制
运维·服务器·网络·智能路由器·pim·ensp
CS创新实验室22 分钟前
《计算机网络》深入学:以太网交换机原理与应用
服务器·网络·计算机网络·以太网·以太交换机
Hi2024021723 分钟前
使用Docker Compose搭建LibreNMS网络监控系统
运维·网络·docker·容器
CS创新实验室25 分钟前
《计算机网络》深入学:广域网
服务器·网络·计算机网络·408·计算机考研·广域网
Whisper_Sy27 分钟前
Flutter for OpenHarmony移动数据使用监管助手App实战 - 月报告实现
android·开发语言·javascript·网络·flutter·ecmascript
小李独爱秋28 分钟前
计算机网络经典问题透视:EF PHB与AF PHB深度解析——它们有何不同,各适用于何种通信量?
网络·计算机网络·信息与通信·qos·phb
Java程序员威哥36 分钟前
SpringBoot多环境配置实战:从基础用法到源码解析与生产避坑
java·开发语言·网络·spring boot·后端·python·spring