4.9docker数据卷/网络模式

发布时间:2026/8/5 22:51:23
4.9docker数据卷/网络模式 数据卷volume1. 是什么数据卷Volume是 Docker 官方推荐的容器数据持久化方案本质是由 Docker 守护进程统一管理的宿主机目录默认路径/var/lib/docker/volumes/完全独立于容器的生命周期专门用于持久化容器生成 / 使用的数据。2. 为什么需要容器默认是临时存储容器删除后内部所有数据会被彻底清除无法保留。数据卷解决了以下核心问题✅ 数据持久化容器销毁 / 重建后数据不丢失✅ 数据共享多个容器可挂载同一数据卷实现数据互通✅ 解耦容器与数据容器与存储分离提升容器可移植性✅ 性能与安全比直接挂载宿主机目录更安全支持多种存储驱动扩展3. 能干什么持久化数据库、日志、配置等核心业务数据实现容器与宿主机、容器与容器之间的文件共享容器迁移、备份与恢复开发环境热重载如代码实时同步绑定方式1匿名绑定-v /container/pathDocker 自动生成随机卷名统一管理/var/lib/docker/volumes/[哈希]/_data匿名绑定绑定删除容器后数据卷保留可以使用--rm让容器删除时数据卷也删除2具名绑定-v my-volume:/container/path按指定名称管理默认路径/var/lib/docker/volumes/[卷名]/_data3Bind 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-datals列出当前主机上所有的数据卷docker volume ls区分匿名卷 / 具名卷prune删除所有未被使用的本地数据卷清理孤儿卷docker volume prune执行前会二次确认rm删除指定的一个或多个数据卷docker volume rm nginx-data删除单个docker volume rm $(docker volume ls -qf danglingtrue)批量删匿名卷docker网络模式1bridge网桥模式核心结论速记1. 网络模式这是 Docker 默认的 bridge 网络模式容器默认连接到 docker0 网桥。2. 容器间通信同一主机上的容器通过同一个 docker0 网桥实现二层互通无需额外配置。3. 外网访问流程容器访问外网时请求会经过容器 → docker0 网桥 → 宿主机网络栈/NAT → 宿主机网卡(ens33) → 外网默认网桥 docker0不支持容器名解析→ 只能 ping IP不能 ping 容器名自定义网桥内置 DNS 服务→ 可以直接ping web2、curl 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 web22host模式原理共享网络命名空间。容器不再拥有独立的 IP直接复用宿主机的 IP 和端口。容器内的端口就是宿主机的端口不需要-p映射。优点性能高少一层转发、端口直接暴露。缺点失去隔离性端口容易冲突容器间网络隔离失效。docker run -d --name web3 --net host nginx3. None无网络模式原理彻底关闭网络。容器只有一个lo回环接口没有任何网卡。完全孤立既不能访问外网也不能被外部访问也不能连其他容器。适用场景极度安全的离线任务。不需要网络的加密计算任务。手动定制网络的基础层。docker run -d --name nginx-none --network none nginx4. 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 nginx5. 自定义网络推荐生产首选原理用户手动创建的网络docker network create。可以创建Bridge 网络或Overlay 网络Swarm 模式。为什么推荐自动 DNS 解析在自定义网络中容器名可以直接互 ping默认 bridge 网络不行需 link。完全隔离不同的自定义网络之间容器默认无法互通安全可控。多网段可以指定子网段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

相关新闻