在本节课程中,我们将讨论 Docker 中的网络和数据持久性概念,以及如何创建和管理网络和数据卷。
Docker 网络基础
默认情况下,每个 Docker 容器都有一个私有的虚拟网络接口,并分配一个网络 IP 地址,您可以使用这个 IP 地址来与宿主机或其他容器相互通信。Docker 支持以下几种网络驱动:
- Bridge(桥接):桥接网络是默认网络驱动。当没有指定任何网络时,容器将连接到默认的桥接网络。桥接网络允许容器相互通信,以及与宿主机通信。
- Host(主机):使用宿主机网络针对单个容器的设置。在此网络驱动下,容器直接共享宿主机的网络命名空间。
- None(无):禁用容器的网络设置。在此网络驱动下,容器将不具备网络连接功能。
- Overlay(覆盖):覆盖网络主要用于跨主机的容器通信,尤其是在 Docker Swarm 集群中使用。
创建 Docker 网络
要创建自定义网络,使用 docker network create 命令。例如,创建名为 my-network 的自定义桥接网络:
docker network create my-network
容器网络连接
要将容器连接到特定网络,请在启动容器时使用 --network 标志:
docker run --network=my-network --name container_name <image_name>
例如,将名为 my-db 的容器连接到名为 my-network 的网络,您需要运行:
docker run -d --network=my-network --name my-db postgres:13
Docker 数据卷概述
数据卷是在 Docker 容器之外存储数据的独立文件结构。数据卷可解决容器间共享数据和容器数据持久化的需求。当您创建一个卷后,Docker 会在宿主机上存储卷。当容器引用此卷时,Docker 会将卷挂载到容器内的指定目录。
创建和使用数据卷
可以使用以下命令在 Docker 中创建数据卷:
docker volume create <volume_name>
例如,创建名为 db_data 的数据卷:
docker volume create db_data
接着,您可以在运行容器时使用 --mount 标志将数据卷挂载到指定容器目录。例如,创建一个名为 my-db 的 PostgreSQL 容器,将名为 db_data 的数据卷挂载到 /var/lib/postgresql/data 目录:
docker run -d --name my-db --mount source=db_data,target=/var/lib/postgresql/data postgres:13
通过这节课程,您了解了 Docker 网络和数据卷的基本概念,并熟悉了如何创建、连接和管理网络以及数据卷。这些概念在在实际中部署容器应用程序时非常重要,因为它们有助于确保容器之间的有效通信和数据持久化。