Docker compose无法启动已使用的服务地址?

Ole*_*Ole 5 docker docker-compose gogs

由于某种原因docker-compose,不喜欢203.0.113.1下面配置中 gogs 容器的地址。请注意,在下面的示例中,我运行的 Gogs 可以正常203.0.113.3工作,但是如果我将其更改为203.0.113.1则消息:

错误:对于 f1d322793d47_docker_gogs_1 无法启动服务 gogs:地址已在使用中。

我已经检查以确保没有使用该 IP 地址的容器203.0.113.1正在运行,所以我很好奇是否docker-compose出于某种原因一般地禁止该地址?

    version: '3'
    services:
      gogs-nginx:
        build: ./nginx
        ports:
        - "80:80"
        networks:
          mk1net:
            ipv4_address: 203.0.113.2
      gogs:
        image: gogs/gogs
        ports:
        - "3000:3000"
        volumes: 
          - gogs-data:/data
        depends_on:
          - gogs-nginx
        networks: 
          mk1net:
            ipv4_address: 203.0.113.3
    volumes:
      gogs-data:
         external: true
    networks:
      mk1net:
        ipam:
          config:
            - subnet: 203.0.113.0/24
Run Code Online (Sandbox Code Playgroud)

msz*_*ach 10

在网络中,通常为特定任务保留三个 IP。

0 用作网络地址。1 用作网关地址,255 用作广播地址。

如果一个容器想与同一网络中的另一个容器通信,他可以直接与他交谈。当他想与网络外的其他 IP 通信时,他会将请求发送到网关地址,并希望网关知道如何路由它。

要查看这一点,您可以检查 docker 容器并检查 IPAddress 附近的 Gateway 属性。

或者使用 ifconfig (Linux) 并搜索与您创建的 ID 相同的网络。该网络的 IP 为 203.0.113.1

所以你的 IP 已经被网关使用了。

在 docker compose 版本 2 中,有一个配置可以更改网关和广播 ip。

对于版本 3,目前似乎不支持该配置