Compose 网络配置

发布于 2024-04-08 07:11:13 字数 1853 浏览 25 评论 0

本节适用于版本大于 2 的 Compose 文件版本。

默认情况下 Compose 会为每一个项目设置一个单独的网络。服务的每一个容器都加入这一个网络,并且该网络上的其他容器都可以访问到它,并且它们可以在与容器名称相同的主机名上发现它。

你的应用程序的网络将会基于 项目名称 去命名,这是基于它所在的目录名称。你可以使用 --project-name 标签或者 COMPOSE_PROJECT_NAME 环境变量去覆盖项目名称。

举个例子,假设你的应用在 myapp 目录下,你的 docker-compose.yml 是这样的:

version: "3.9"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    ports:
      - "8001:5432"

当你执行 docker-compose up ,将会发生如下事情:

  1. 创建一个名为 myapp_default 的网络。
  2. 一个使用 web 配置的容器创建。它以 web 的名称加入 myapp 默认的网络。
  3. 一个使用 db 配置的容器创建。它以 db 的名称加入 myapp 默认的网络。

从 Compose2.1 开始,覆盖网络总是在新建时被设置为 attachable ,并且它是无法配置的,这意味着所有独立的容器也能连接到这个覆盖网络

在 Compose3.1 中,你可以自己将 attachable 设置为 false.

现在每一个容器可以通过 hostname( web or db )获取适当的容器的 IP 地址。举个例子:在 web 应用中的代码可以通过 postgres://db:5432 这一 URL 连接使用 Postgres 数据库。

主机端口容器端口 是很重要的,在上面的例子中, db主机端口 是 8001,容器端口是 5432(postgres 默认值)。service 与 service 的通信使用 容器端口 。如果配置了 主机端口 ,那么服务将能在集群外部访问。

web 容器中,你连接 db 容器的字符串就像是 postgres://db:5432 ,从主机连接 db 容器的字符串就像是 postgres://{DOCKER_IP}:8001

二. 更新容器

如果您对服务配置进行了更改并且使用 docker-compose up 去更新了它,那么老的容器将会关闭,新的容器将以不同的 IP 地址但相同的名称加入网络。运行的容器可以查找该名称并连接到新地址,但是旧地址将会停止工作。

如果有些容器仍然视图连接老的容器,则它们将被关闭。容器负责检测此情况、再次查找名称并重新连接。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

花开浅夏

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文