You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker Compose中实现共享其他容器的网络栈?

问题描述

用户已知可通过命令 docker run -it --net=container:<容器名> <镜像名> bash 让容器共享其他容器的网络栈,现在需要在以下Docker Compose配置中实现让attachedclient容器共享client容器的网络栈,询问应修改配置中<???>处或其他位置的内容:

version: "3.8"
services:
  client:
    image: ubuntu
    networks:
      - mynet
  attachedclient:
    image: ubuntu
    networks:
      - <???>
networks:
  mynet:

解决方案

你不需要修改<???>处的内容,而是要删除attachedclient的networks配置块,换成network_mode字段来指定共享目标服务的网络栈。具体修改如下:

修改后的完整配置:

version: "3.8"
services:
  client:
    image: ubuntu
    networks:
      - mynet
  attachedclient:
    image: ubuntu
    network_mode: service:client
networks:
  mynet:

说明

  • network_mode: service:client 是Docker Compose中对应docker run --net=container:<容器名>的写法,它会让attachedclient容器直接复用client服务的网络命名空间,两者共享IP地址、端口、网络接口等所有网络资源。
  • 使用该配置后,attachedclient自身的networks配置会被忽略,因为它已经完全复用了client的网络栈。
  • 如果需要精准指定某个具体容器(而非服务),也可以写成network_mode: container:<容器ID或容器名>,但在Compose场景下,用服务名service:client更可靠,Compose会自动关联到对应服务的容器。

内容的提问来源于stack exchange,提问作者eskaes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:10:16