docker-compose 可以在具有离散端口的服务之间共享 IP 吗?

2024-01-07

目前,我们拥有使用 Supervisord 进行复杂构建的 docker 容器,以便我们可以将服务分组在一起。例如,nginx 和 ssh。

我正在尝试使用由共享卷链接的更多服务驱动的隔离来重建这些。然而,无需将 IP 映射到主机,我似乎找不到一种方法来允许共享 IP 地址,即使端口可能是离散的。

我想做的是这样的:

version: '2'
services:
  web:
    image: nginx
    volumes:
    - /data/web:/var/www
    networks:
      public:
        ipv4_address: 10.0.0.1
    ports:
    - "10.0.0.1:80:80"
  ssh:
    image: alpine-sshd
    volumes:
    - /data/web:/var/www
    networks:
      public:
        ipv4_address: 10.0.0.1
    ports:
    - "10.0.0.1:22:22"
networks:
  public:
    external: true

...在哪里public是预定义的 docker macvlan 网络。

当我尝试这个时,我收到错误:

ERROR: for ssh  Cannot start service ssh: Address already in use

我知道另一个解决方案是引入第三个服务作为代理。然而,我认为这是一个足够简单的情况,不需要它。

是否可以将 docker-compose/docker-networking 配置为通过端口进行路由,以允许相同的 IP 地址用于不同的容器?


是否可以将 docker-compose/docker-networking 配置为通过端口进行路由,以允许相同的 IP 地址用于不同的容器?

是的,我们可以(熟悉?-_-!)。 Docker 提供了一个网络模式选项,称为service:service-name.

当我们执行docker run,我们可以添加--network=service:service-name旗帜。这意味着当前容器使用相同的网络命名空间service:service-name. 更多信息 https://docs.docker.com/compose/compose-file/#network_mode参考这里。

尝试下面的撰写文件。我已经测试过了,效果很好。

version: '2'
services:
  web:
    image: nginx
    networks:
      public:
        ipv4_address: 10.0.0.2
    ports:
      - "8880:80"
      - "2220:22"

  ssh:
    image: panubo/sshd
    network_mode: "service:web"
    depends_on:
      - web
networks:
  public:
    external: true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker-compose 可以在具有离散端口的服务之间共享 IP 吗? 的相关文章

随机推荐

  • TXMLDocument 的替代方案?

    最近 我们将代码从 Delphi 2009 升级到 Delphi XE 并更新了我们的 Indy 组件 不确定这是否相关 但从那时起 我们在 Windows Server 2003 计算机上加载和保存 XML 文件时就会出现错误 XMLDo
  • 你可以有多个 UnityAppController 的子类吗?

    我需要添加一些代码application didFinishLaunchingWithOptions in UnityAppController使用其 Objective C SDK 配置 Google AdWords 转化跟踪 每次 Un
  • Objective C JAVA 字节序

    我使用的是 64 位 Mac 并且我确信 Java 在我的例子中是 1 6 正在使用 big endian 我正在尝试从 Objective C 中的 iPhone 与我的 java 服务器进行通信 iPhone objective C 使
  • 在我的 Android 项目中使用领域数据库时无法生成 GlideApp 和 Glide 请求

    我使用 Glide 来处理图像 到目前为止它运行良好 但是现在 当我将 Realm 数据库集成到我的项目中时 它在生成 GlideApp 和 GlideRequests 类时出现错误 主要构建 gradle buildscript repo
  • GIF 图像在“document.location.href”时停止

    我在 javascript 中有这个函数 function loadPage url showLoadPageGif visibility On document location href getPath url 当我使用此功能时 GIF
  • 如何从 Knex / Postgresql 查询返回纯值?

    我正在尝试使用 Knex 从 Postgres DB 返回一个简单的标量字符串值 到目前为止 我所做的一切都会返回一个带有键 列名 和值的 JSON 对象 因此我必须访问该对象才能获取值 如果我返回多行 那么我会得到多个 JSON 对象 每
  • Python 动态属性和 mypy

    我试图将一些函数屏蔽为属性 通过包装器 这在这里并不重要 并将它们动态添加到对象中 但是 我需要代码完成和 mypy 才能工作 我想出了如何动态添加属性 通过元类或简单地在构造函数中 但我遇到的问题是 mypy 没有选择它 IDE 也没有
  • 如何从android将值传递到php?

    我在将值从 android 传递到 php 脚本时遇到问题 我想要questionid传递到 php 脚本url get ansurl但我无法传递该值 这个怎么做 请指导我 多谢 try int success json getInt TA
  • 自定义 UIAlertView 上的按钮

    这是我自定义按钮的当前方式 UIAlertView av UIAlertView alloc init av addButtonWithTitle UIButton yesButton av subviews lastObject av s
  • 使用 htaccess 将网站重定向到移动版网站

    您好 我使用以下代码重定向到移动网站 从移动到移动网站 移动中的domain com到m domain com 它工作正常 但网址末尾的 id 9 即将到来 如何删除 id 9 从 url 以及如何将移动网站 m domain com 从桌
  • Android 视图转换是否在光栅化后应用?

    下面代码中的行 A 和行 B 应生成相同的图像 然而 行 A 却生成了图像 怎么了 光栅化后是否应用视图 画布转换 import android content Context import android graphics Canvas
  • express.js - 单行中多个路由的单个路由处理程序

    有没有办法在单个函数调用中做到这一点 var todo function req res app get todo app get blabla todo app get blablablabla todo 就像是 app get blab
  • Google 联系 gdata (Java) 因内容类型没有解析器而失败:application-xml[application/xml]

    最近 两天前 当我们尝试访问联系人时 我们开始在 Java 中的 google gdata 客户端中遇到异常 提要 m8 feeds contacts default full 例外的是 com google gdata util Pars
  • 如何使用 Gmail Api 获取邮件列表?

    我想访问消息列表 Object 2 0 0 p481 008 gt g gmail api users messages list gt lt Google APIClient Method 0x41c948c ID gmail users
  • SQLite多进程访问

    我们在多进程和多线程应用程序中使用 SQLite SQLite 数据库文件使用嵌入式 SQLite 加密进行加密 这FAQ http sqlite org faq html q5指出 SQLite 应该能够使用锁机制来管理多进程访问 我们遇
  • WPF - 在系统帐户下执行进程时性能低下

    问题描述 我有一个 WPF 应用程序 通常在具有管理员权限的本地用户帐户下运行 但是 在某些情况下 该进程是由运行在下面的服务或脚本启动的SYSTEM帐户 因此该进程也在SYSTEM帐户 问题是当进程运行时SYSTEM帐户时 存在一些明显的
  • 编写一个程序来计算级数的项之和

    编写一个程序来计算级数项的总和 4 8 12 16 20 24 28 32 n 其中 n 是输入 考虑 n 始终有效 其中 意味着它遵循系列模式 n int input Enter n sum 0 for i in range 4 n 4
  • 如何使用新的 SVN 合并跟踪?

    在我现有的 SVN 1 5 之前 合并策略中 我们在创建分支时创建主干的副本 称为 BasePoint 以便稍后在合并过程中引用 当我们需要将分支合并回主干时 我们执行 2 个操作 从 BasePoint 合并到 LatestTrunk 主
  • mysql 与 php 计算行数的最佳实践

    1 计数记录 Connect to mysql server link mysql connect HOST USER PASSWORD if link die Could not connect to server mysql error
  • docker-compose 可以在具有离散端口的服务之间共享 IP 吗?

    目前 我们拥有使用 Supervisord 进行复杂构建的 docker 容器 以便我们可以将服务分组在一起 例如 nginx 和 ssh 我正在尝试使用由共享卷链接的更多服务驱动的隔离来重建这些 然而 无需将 IP 映射到主机 我似乎找不