news 2026/8/5 22:51:13

4.9docker数据卷/网络模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
4.9docker数据卷/网络模式

数据卷volume

1. 是什么?

数据卷(Volume)是 Docker 官方推荐的容器数据持久化方案,本质是由 Docker 守护进程统一管理的宿主机目录(默认路径:/var/lib/docker/volumes/),完全独立于容器的生命周期,专门用于持久化容器生成 / 使用的数据。

2. 为什么需要?

容器默认是临时存储:容器删除后,内部所有数据会被彻底清除,无法保留。数据卷解决了以下核心问题:

  • ✅ 数据持久化:容器销毁 / 重建后,数据不丢失
  • ✅ 数据共享:多个容器可挂载同一数据卷,实现数据互通
  • ✅ 解耦容器与数据:容器与存储分离,提升容器可移植性
  • ✅ 性能与安全:比直接挂载宿主机目录更安全,支持多种存储驱动扩展

3. 能干什么?

  • 持久化数据库、日志、配置等核心业务数据
  • 实现容器与宿主机、容器与容器之间的文件共享
  • 容器迁移、备份与恢复
  • 开发环境热重载(如代码实时同步)

绑定方式

1匿名绑定

-v /container/path

Docker 自动生成随机卷名,统一管理,/var/lib/docker/volumes/[哈希]/_data

匿名绑定绑定删除容器后,数据卷保留,可以使用--rm让容器删除时数据卷也删除

2具名绑定

-v my-volume:/container/path

按指定名称管理,默认路径/var/lib/docker/volumes/[卷名]/_data

3Bind Mount(绑定挂载)

-v /host/path:/container/path

用户手动指定宿主机任意路径,Docker 不管理直接映射宿主机目录,可实时读写宿主机文件

数据卷管理

docker volume是 Docker 专门用于 ** 管理数据卷(Volume)** 的核心命令,所有操作都围绕数据卷的生命周期展开。

  • 语法:docker volume COMMAND
  • 可以通过docker volume COMMAND --help查看每个子命令的详细用法
子命令作用常用实战示例
create手动创建一个数据卷(匿名 / 具名)docker volume create nginx-data(创建名为nginx-data的具名卷)
inspect查看数据卷的详细信息(包括存储路径、挂载点等)docker volume inspect nginx-data
ls列出当前主机上所有的数据卷docker volume ls(区分匿名卷 / 具名卷)
prune删除所有未被使用的本地数据卷(清理孤儿卷)docker volume prune(执行前会二次确认)
rm删除指定的一个或多个数据卷docker volume rm nginx-data(删除单个)docker volume rm $(docker volume ls -qf dangling=true)(批量删匿名卷)

docker网络模式

1bridge网桥模式

核心结论速记

1. 网络模式:这是 Docker 默认的 bridge 网络模式,容器默认连接到 docker0 网桥。

2. 容器间通信:同一主机上的容器通过同一个 docker0 网桥实现二层互通,无需额外配置。

3. 外网访问流程:容器访问外网时,请求会经过:容器 → docker0 网桥 → 宿主机网络栈/NAT → 宿主机网卡(ens33) → 外网

  • 默认网桥 docker0不支持容器名解析→ 只能 ping IP,不能 ping 容器名

  • 自定义网桥内置 DNS 服务→ 可以直接ping web2curl web2

自定义网桥 docker network create --driver bridge my-net docker run -d --name web1 --network my-net nginx docker run -d --name web2 --network my-net nginx docker exec -it web1 curl web2

2host模式

  • 原理
    • 共享网络命名空间。容器不再拥有独立的 IP,直接复用宿主机的 IP 和端口。
    • 容器内的端口就是宿主机的端口,不需要-p映射
  • 优点性能高(少一层转发)、端口直接暴露。
  • 缺点失去隔离性,端口容易冲突,容器间网络隔离失效。
docker run -d --name web3 --net host nginx

3. None(无网络模式)

  • 原理
    • 彻底关闭网络。容器只有一个lo(回环接口),没有任何网卡。
    • 完全孤立,既不能访问外网,也不能被外部访问,也不能连其他容器。
  • 适用场景
    • 极度安全的离线任务。
    • 不需要网络的加密计算任务。
    • 手动定制网络的基础层。
docker run -d --name nginx-none --network none nginx

4. Container(容器模式)

  • 原理
    • 共享网络栈。新创建的容器与一个已存在的容器共享网络命名空间。
    • 它们共用 IP、端口资源(例如:A 容器暴露了 80 端口,B 容器也能直接用 80,且互通)。
  • 关键点
    • 两个容器之间几乎无损耗通信(通过 lo 接口)。
    • 但这两个容器只有网络共享,文件系统还是隔离的
# 先运行容器A docker run -d --name container-a nginx # 运行容器B,与A共享网络 docker run -d --name container-b --network container:container-a nginx

5. 自定义网络(推荐)🔥生产首选

  • 原理
    • 用户手动创建的网络(docker network create)。
    • 可以创建Bridge 网络Overlay 网络(Swarm 模式)。
  • 为什么推荐?
    1. 自动 DNS 解析:在自定义网络中,容器名可以直接互 ping(默认 bridge 网络不行,需 link)。
    2. 完全隔离:不同的自定义网络之间,容器默认无法互通,安全可控。
    3. 多网段:可以指定子网段(Subnet)、网关(Gateway)。
# 1. 创建自定义网络 docker network create --driver bridge --subnet 172.20.0.0/16 --gateway 172.20.0.1 my-net # 2. 运行容器加入该网络 docker run -d --name nginx-custom --network my-net nginx

网络实战命令

# 1. 查看所有网络 docker network ls # 2. 查看网络详情 docker network inspect 网络名/ID # 3. 创建自定义网络 docker network create my-bridge-net # 4. 运行容器并指定网络 docker run -d --name web1 --network my-bridge-net nginx # 5. 将运行中的容器连接到新网络 docker network connect my-bridge-net web1
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 22:46:15

Unity捕鱼游戏开发实战:炮台控制与鱼群AI状态机实现

1. 项目概述与核心思路最近有不少朋友在后台留言,想了解如何从零开始用Unity做一个经典的捕鱼游戏。这类游戏的核心乐趣,一方面在于用鼠标或手柄控制炮台,精准射击获得反馈;另一方面则在于鱼群游动的“灵性”,它们不能…

作者头像 李华
网站建设 2026/8/5 22:45:14

RS-485通信实战:从半双工与全双工原理到工业组网调试

1. 项目概述:从“一根线”到“两根线”的本质区别在工业自动化、楼宇自控、安防监控这些领域里,RS-485这个名字就像空气一样无处不在。但凡涉及到设备之间需要跑得远一点(几十米到上千米)、抗干扰能力强一点、还能挂一堆设备&…

作者头像 李华
网站建设 2026/8/5 22:37:28

KaTrain围棋AI训练平台:KataGo引擎驱动的专业级智能分析实战指南

KaTrain围棋AI训练平台:KataGo引擎驱动的专业级智能分析实战指南 【免费下载链接】katrain Improve your Baduk skills by training with KataGo! 项目地址: https://gitcode.com/gh_mirrors/ka/katrain KaTrain是基于开源围棋AI引擎KataGo构建的专业级围棋训…

作者头像 李华
网站建设 2026/8/5 22:34:44

从零搭建独立技术博客:Hugo + GitHub Pages 全栈实践指南

1. 为什么你需要一个独立的技术博客?如果你是一名开发者、技术爱好者,或者任何希望通过文字沉淀知识的人,那么这个问题可能已经在你脑海里盘旋过无数次了。在信息爆炸的时代,我们习惯于在掘金、CSDN、知乎、个人公众号等平台发布内…

作者头像 李华
网站建设 2026/8/5 22:33:31

如何使用MPark.Patterns?从FizzBuzz示例快速入门C++模式匹配

如何使用MPark.Patterns?从FizzBuzz示例快速入门C模式匹配 【免费下载链接】patterns This is an experimental library that has evolved to P2688 项目地址: https://gitcode.com/gh_mirrors/patterns2/patterns MPark.Patterns是一个实验性C库&#xff0c…

作者头像 李华
网站建设 2026/8/5 22:29:08

HumanoidBench机器人模型详解:H1、G1与Shadow Hand的传感器与控制模式

HumanoidBench机器人模型详解:H1、G1与Shadow Hand的传感器与控制模式 【免费下载链接】humanoid-bench 项目地址: https://gitcode.com/gh_mirrors/hu/humanoid-bench HumanoidBench是一个功能强大的机器人仿真平台,提供了多种先进的机器人模型…

作者头像 李华