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

时间:2018-07-24 02:48:37

标签: docker docker-compose gogs

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

  

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

我已经检查以确保没有使用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

1 个答案:

答案 0 :(得分:3)

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

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

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

要查看此信息,您可以检查Docker容器并检查其IPAddress附近的Gateway属性。

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

因此您的IP已被网络网关使用。

在docker compose版本2中,有一个config用于更改网关和广播ip。

对于版本3,似乎目前不支持config