【问题标题】:docker-compose up error, Invalid addressdocker-compose up 错误,地址无效
【发布时间】:2017-08-12 09:44:26
【问题描述】:

我想使用elastic的docker-elk,然后我克隆了elastic github代码。而且我想为每个容器使用一个特定的ip,所以我为每个容器定义了一个特定的ip,当我运行docker-compose up时,我遇到了错误

ERROR: for elasticsearch  Cannot start service elasticsearch: Invalid address 172.18.1.3: It does not belong to any of this network's subnets
ERROR: Encountered errors while bringing up the project.

它没有显示任何网络的子网,但我定义了子网,docker-compose.yml 像这样

version: '2'

services:

  elasticsearch:
    build: elasticsearch/      
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      elk:
        ipv4_address: 172.18.1.3

  logstash:
    build: logstash/
    ports:
      - "5000:5000"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      elk:
        ipv4_address: 172.18.1.4
    depends_on:
      - elasticsearch

  kibana:
    build: kibana/
    ports:
      - "5601:5601"
    networks:
      elk:
        ipv4_address: 172.18.1.5
    depends_on:
      - elasticsearch

networks:

  elk:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.1.0/24

docker version

Client:
 Version:      17.06.0-ce
 API version:  1.30
 Go version:   go1.8.3
 Git commit:   02c1d87
 Built:        Fri Jun 23 21:20:36 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.06.0-ce
 API version:  1.30 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   02c1d87
 Built:        Fri Jun 23 21:21:56 2017
 OS/Arch:      linux/amd64
 Experimental: false

【问题讨论】:

  • 发布docker version的输出

标签: docker docker-compose dockerfile


【解决方案1】:

我刚刚遇到了这个问题,我的问题似乎是 docker 如何缓存网络和容器的问题。我必须docker network rm 之前创建的网络。我还必须 docker ps -adocker rm 之前创建的容器,因为它们被缓存以使用您将要删除的网络。在我删除了所有剩余的工件后,它可以正常启动。

【讨论】:

    【解决方案2】:

    使用docker-compose down 并尝试运行docker-compose up。这对我有用

    【讨论】:

      【解决方案3】:

      根据 Compose docsipam 块必须定义子网范围和网关。因此,只需将您的更新为:

      ipam:
        config:        
          - driver: default
            subnet: 172.18.1.0/24
            gateway: 172.18.1.1
      

      【讨论】:

        【解决方案4】:

        除了使用docker network rm <networkname> 命令删除与子网 IP 冲突的网络之外。 确保根据同一 docker compose 文件的 networks 部分中指定的子网 IP,仔细检查 docker compose 文件 中分配给服务的所有 IP 地址。当您的 docker composer 文件有许多服务和网络时,很容易忽略 IP。

        错误子网错误示例:“172.22.0.1:它不属于此网络的任何子网”

        version: '3'
        
        services:
          web_service:
            networks:
              webservices:
                ipv4_address: 172.22.0.1
            image: nginx:latest
            environment:
             - NGINX_HOST=web.phenex.docker
             - NGINX_PORT=80
        
        networks:
          webservices:
            driver: bridge
            ipam:
              driver: default
              config:
                - subnet: 172.21.0.0/24
        

        【讨论】:

          猜你喜欢
          • 2019-07-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-02
          • 1970-01-01
          • 2018-12-18
          • 2023-01-22
          • 2020-06-16
          相关资源
          最近更新 更多