网站建设 统一标准体系,昊诺网站建设,wordpress彩票类模板,wordpress 页面生成目录 一、Docker 容器的网络模式
1. Bridge 模式
2. Host 模式
3. Container 模式
4. None 模式
5. Overlay 模式
6. Macvlan 模式
7. 自定义网络模式 二、端口映射
1. 端口映射
2. 随机映射端口
3. 指定映射端口
#xff08;1#xff09;固定端口
#xff08;…目录 一、Docker 容器的网络模式
1. Bridge 模式
2. Host 模式
3. Container 模式
4. None 模式
5. Overlay 模式
6. Macvlan 模式
7. 自定义网络模式 二、端口映射
1. 端口映射
2. 随机映射端口
3. 指定映射端口
1固定端口
2宿主机随机端口
三、容器互联
1. 使用 --link 选项
1创建源容器
2创建接收容器
3测试容器互联
四、容器间通信实现案例
1. docker network create 常用选项及示例
一--driver, -d
二--subnet
三--gateway
四--ip-range
五--internal
六--attachable
2. 容器间通信步骤
一创建自定义网络
二创建一个不在此自定义网络的容器
三创建两个容器并加入自定义网络
四登录到容器测试通信结果
五、数据持久化技术
一、数据卷基础概念
二、数据卷的作用
三、数据卷创建与使用
一匿名数据卷
二具名数据卷
四、数据卷共享
五、挂载主机目录 / 文件作为数据卷
一挂载主机目录案例以 httpd 容器为例
二挂载主机文件 / 多目录案例以 nginx 容器为例
六、Docker 数据管理注意事项总结 一、Docker 容器的网络模式
1. Bridge 模式 含义 Docker 创建的虚拟网络交换机docker0容器通过 veth pair 虚拟网卡接入隔离子网。 特点 容器获得独立私有 IP如 172.17.0.2 默认启用 NAT 地址转换 同网络内容器互通跨网络隔离 作用 容器网络隔离避免与宿主机网络冲突 便捷互通同一 Bridge 网络内自动 DNS 解析 访问外网通过 iptables MASQUERADE 规则实现出向流量伪装 配置 # 创建自定义Bridge网络解决默认网络无DNS问题
docker network create \--driver bridge \ # 网络驱动类型--subnet 192.168.5.0/24 \ # 明确子网范围防IP冲突--gateway 192.168.5.1 \ # 指定网关地址my-bridge # 网络名称# 容器接入自定义网络
docker run -d \--name web \ --network my-bridge \ # 绑定网络--ip 192.168.5.10 \ # 固定IP可选nginx
2. Host 模式 含义 容器直接共享宿主机的网络命名空间使用宿主机 IP 和端口资源。 特点 无独立网络栈ifconfig 显示宿主机网卡 无 NAT 转发层 作用 网络零损耗消除 NAT 性能开销延迟降低 10%~15% 直接暴露服务省去端口映射步骤 配置 docker run -d \--network host \ # 启用Host模式nginx # 容器直接监听宿主机80端口
3. Container 模式 含义 新容器共享指定容器的网络命名空间共用 IP、端口、MAC 等。 特点 多容器共享同一网络身份 通过 localhost 直接互访 作用 进程协同实现 Sidecar 模式如日志收集器监控应用容器 零延迟通信容器间直接环回接口通信 配置 # 启动目标容器提供网络栈
docker run -d --name web nginx# 新容器共享web容器的网络
docker run -it \--network container:web \ # 绑定目标容器alpine \wget -qO- http://localhost # 直接访问web容器的服务
4. None 模式 含义 容器无任何网络接口仅保留 lo 环回。 特点 极致网络隔离 需手动配置网络栈 作用 安全沙箱禁止所有网络通信金融级数据处理 自定义网络用户手动添加复杂网络配置 配置 docker run -it \--network none \ # 禁用网络alpine ip addr # 仅显示lo接口
5. Overlay 模式 含义 基于 VXLAN 隧道封装的跨主机虚拟网络用于集群环境。 特点 大二层网络抽象 支持 TLS 加密通信 作用 跨主机直连不同物理机上的容器互通如局域网 服务发现内置分布式 KV 存储Swarm 集群 配置 # 初始化Swarm集群必需
docker swarm init --advertise-addr 宿主机IP# 创建加密Overlay网络
docker network create \-d overlay \ --subnet 10.11.0.0/16 \ --opt encrypted \ # 启用数据加密swarm-net
6. Macvlan 模式 含义 为容器分配真实 MAC 地址使其作为独立设备接入物理网络。 特点 容器直连物理网络 需手动管理 IP 作用 物理网络集成容器直接获取物理网段 IP 绕过 NAT外部设备可直接访问容器 配置 docker network create \-d macvlan \--subnet 192.168.1.0/24 \--gateway 192.168.1.1 \-o parenteth0 \ # 绑定物理网卡-o macvlan_modebridge \ # MACVLAN模式macvlan-netdocker run -d \--network macvlan-net \--ip 192.168.1.105 \ # 必须指定未用IPnginx
7. 自定义网络模式 含义 用户根据需求创建的定制化网络支持多种驱动Bridge/Overlay/Macvlan等。 特点 可定义子网/IP范围 支持自动 DNS 服务发现 网络策略精细化控制 作用 隔离环境创建逻辑隔离的网络域 服务发现容器名自动解析为 IP 跨主机通信Overlay 驱动支持集群 配置 # 创建自定义Bridge网络
docker network create \--driver bridge \ # 网络驱动类型--subnet 10.7.0.0/16 \ # 自定义子网--gateway 10.7.0.1 \ # 网关地址--ip-range 10.7.1.0/24 \ # IP分配范围--attachable \ # 允许运行中容器接入my-network # 网络名称# 容器加入自定义网络
docker run -d --name web --network my-network nginx 二、端口映射
1. 端口映射 含义建立宿主机端口与容器端口的流量转发通道。 特点 基于 iptables DNAT 规则 支持 TCP/UDP 协议 作用 暴露容器服务到外部网络 解决容器网络隔离导致的访问限制
2. 随机映射端口 含义由 Docker 自动分配宿主机可用端口。 作用 避免端口冲突 快速测试多实例服务 配置 # 映射所有EXPOSE声明的端口
docker run -d -P nginx # 大写P参数# 查看映射关系
docker port 容器名
# 输出示例80/tcp - 0.0.0.0:32768#查看进程状态
docker ps -a3. 指定映射端口
docker run 用于创建并启动新的容器通过-p可以指定容器端口到宿主机端口的映射
1固定端口
本质将宿主机指定端口永久绑定到容器端口。 配置
# 基础语法-p 宿主机端口:容器端口[/协议]
docker run -d -p 8080:80 nginx # 宿主机8080 → 容器80# 绑定特定IP仅该IP可访问
docker run -d -p 192.168.1.100:8080:80 nginx# 多协议支持
docker run -d \-p 80:80/tcp \ # TCP协议-p 53:53/udp # UDP协议dns-server# 端口范围映射
docker run -d -p 8000-8010:8000-8010 port-app
2宿主机随机端口
本质由 Docker 自动分配宿主机可用端口。 配置
# 随机绑定宿主机端口到容器指定端口
docker run -d -p 80 nginx # 查看端口docker port 容器名# 随机绑定TCP和UDP端口
docker run -d -p 80/tcp -p 53/udp dual-protocol-app# 批量随机映射容器EXPOSE的所有端口
docker run -d -P nginx # 大写P参数
查看映射
docker port my-container
# 输出80/tcp - 0.0.0.0:32768
# 443/tcp - 0.0.0.0:32769
三、容器互联
容器互联Container Networking 是 Docker 中实现容器间通信的核心机制其核心逻辑为 通过虚拟网络层使多个容器在隔离环境中安全、高效地交换数据无需依赖物理网络配置。
1. 使用 --link 选项 含义在容器间建立单向网络连接。 特点 自动更新 /etc/hosts 文件 注入环境变量 作用 实现容器间基础通信 提供简单的服务发现
1创建源容器
docker run -dit --name web01 centos:7
2创建接收容器
docker run -dit --name web02 --link web01:myweb01 centos:7
3测试容器互联
#登录
docker exec -it web02 /bin/bash#查看
cat /etc/hosts#测试
ping myweb01
四、容器间通信实现案例
因 --link 选项渐被弃用推荐用 Docker 网络实现容器互联docker network create 用于创建自定义网络支撑容器间及容器与外部通信。
1. docker network create 常用选项及示例
一--driver, -d
指定网络驱动程序默认 bridge 常见驱动
bridge单 Docker 主机容器间通信示例 docker network create -d bridge my_bridge_networkhost容器用宿主机网络接口无网络隔离overlay多 Docker 主机跨主机网络用于 Docker Swarm 集群macvlan给容器分配 MAC 地址模拟独立物理设备
二--subnet
指定网络子网用 CIDR 表示法示例 docker network create --subnet172.18.0.0/16 my_subnet_network
三--gateway
指定网络网关 IP 地址示例
docker network create \
--subnet172.19.0.0/16 \
--gateway172.19.0.1 \
my_gateway_network四--ip-range
指定容器可用 IP 地址范围示例
docker network create \
--subnet172.20.0.0/16 \
--gateway172.20.0.1 \
--ip-range172.20.1.0/24 \
my_ip_range_network五--internal
设为内部网络容器无法访问外部网络示例 docker network create --internal my_internal_network
六--attachable
允许独立容器非服务器容器 连入网络示例 docker network create --attachable my_attachable_network
2. 容器间通信步骤
一创建自定义网络
执行 docker network create my_net 先构建容器通信的网络基础。
二创建一个不在此自定义网络的容器 docker run -dit --name web03 centos:7 三创建两个容器并加入自定义网络 docker run -dit --name pc01 --netmy_net centos:7 docker run -dit --name pc02 --netmy_net centos:7 四登录到容器测试通信结果 docker exec -it pc01 /bin/bash ping pc02 #通 ping web03 #不通 五、数据持久化技术
一、数据卷基础概念
Docker 数据卷Data Volumes是实现容器与宿主机数据持久化存储、共享的机制。它是供一个或多个容器使用的特殊目录绕过容器文件系统直接关联宿主机目录 / 文件容器删除后数据卷数据仍留存保障数据持久化 。
二、数据卷的作用 数据持久化容器生命周期短暂内部文件系统数据随容器删除消失数据卷将数据存宿主机避免因容器删除丢失 。 数据共享多个容器可挂载同一数据卷实现配置文件、日志等数据共享适配需共享数据的场景 。 数据备份和恢复数据存于宿主机便于对数据卷执行备份、恢复操作 。 分离数据和应用数据存数据卷让容器镜像更轻巧仅含应用程序提升容器可移植性与可维护性 。
三、数据卷创建与使用
一匿名数据卷
创建容器时用 -v 或 --volume 参数创建、挂载。如
docker run -dit -v /data1 -v /data2 --name web04 centos:7
会在容器内建 /data1、/data2 数据卷宿主机对应存储目录为 /var/lib/docker/volumes/ 下自动分配的目录容器删除后宿主机数据仍在 。可进入容器docker exec -it web04 /bin/bash 验证数据卷目录。
二具名数据卷
创建通过 docker volume create my_volume 命令创建名为 my_volume 的具名数据卷便于管理识别 。挂载使用创建容器时挂载如 docker run -d -v my_volume:/data --name my_container nginx 先建具名卷再挂载到容器 /data 目录 。
四、数据卷共享
借助 --volumes-from 参数让新容器挂载已有容器的数据卷实现数据共享。示例 docker run -dit --volumes-from web04 --name web05 centos:7 /bin/bash 新容器 web05 会挂载 web04 已挂载的数据卷即便 web04 删除只要数据卷未删web05 仍能访问数据且多个容器共享数据卷时数据修改会影响所有挂载该卷的容器 。
五、挂载主机目录 / 文件作为数据卷
一挂载主机目录案例以 httpd 容器为例
docker run -dit -p 8080:80 -v /data1:/usr/local/apache2/htdocs --name web06 httpd
将宿主机 /data1 目录挂载到容器 /usr/local/apache2/htdocs 目录可在宿主机 /data1 建测试文件如 echo ni hao/data1/index.html 通过 curl 192.168.10.101:8080 访问验证 。
二挂载主机文件 / 多目录案例以 nginx 容器为例 准备工作在宿主机建挂载目录mkdir -p /www/{conf,html} 将 nginx 配置文件放 /www/conf 网页代码放 /www/html 。 创建容器挂载 docker run -d -p 9090:80 \
-v /www/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /www/html:/www/html \
-v /www/nginx/log:/var/log/nginx \
--name web07 nginx /bin/bash -c nginx 或简化启动命令利用 nginx 默认启动指令 docker run -d -p 9090:80 \
-v /www/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /www/html:/www/html \
-v /www/nginx/log:/var/log/nginx \
--name web08 nginx nginx 实现主机文件、多目录挂载到 nginx 容器对应位置需注意挂载文件时宿主机要先有对应文件否则会创建同名目录致容器内无法正常使用文件 。 数据卷通过灵活的创建、挂载、共享等操作满足 Docker 容器在数据持久化、共享协作等场景的需求是 Docker 数据管理的核心手段之一 。
六、Docker 数据管理注意事项总结
在 Docker 进行数据管理时需从多维度保障数据有效管理具体注意事项如下 类型适配场景依据需求选数据卷类型匿名卷创建简管不便 存临时中间数据如编译文件 具名卷易管理共享 存持久化高频使用数据如数据库 挂载主机目录卷适配主机交互场景共享配置、数据 。 路径规范使用挂载主机目录作数据卷务必用绝对路径否则挂载失败。 数据卷定期清理借 docker volume ls 查数据卷用 docker volume rm 清理不用的匿名 / 具名卷释放磁盘空间。 容器数据持久化容器文件系统数据易失需持久化的数据尤其是数据库、日志等关键数据 存数据卷多容器挂载同卷要处理并发可在应用层设同步机制锁、事务 关键数据如 MySQL 数据目录 /var/lib/mysql 绑定数据卷保障可恢复 。