docker-compose 如何像 docker run 中一样定义容器范围的网络?

Pol*_*ase 4 docker docker-compose docker-network

运行 2 个容器,其中mycontainer2必须使用相同的网络堆栈mycontainer1。就好像两个容器在同一台机器上运行一样。docker run这是我尝试使用--network container:xxx来实现的方法

$ docker run -it --rm --name mycontainer1 -p 6666:7777 myregistry/my-container1:latest

$ docker run -it --rm --network container:mycontainer1 --name mycontainer2 myregistry/my-container2:latest
Run Code Online (Sandbox Code Playgroud)

我尝试使用docker-compose以下命令来复制此行为。但网络:的定义docker-compose.yaml并不表示与--network container:xxx的选项等效的内容docker run。是否可以docker-compose配置两个容器使用相同的网络堆栈?

Dav*_*aze 8

这是一个network_mode:设定。

version: '3.8'
services:
  mycontainer1:
    image: myregistry/my-container1:latest
    ports: ['6666:7777']
  mycontainer2:
    image: myregistry/my-container2:latest
    network_mode: service:mycontainer1     # <---
Run Code Online (Sandbox Code Playgroud)

由于 Compose 通常会选择自己的容器名称,因此此service:name表单使用与命名的 Compose 服务匹配的容器。(如果您覆盖,container_name:那么您也可以使用container:mycontainer1与 相同的方式docker run。)