docker-compose down default_network错误

s5a0g9ez  于 2023-05-06  发布在  Docker
关注(0)|答案(9)|浏览(126)

我有一个docker-compose与一些php,mysql等启动。几天后,我不能把他们下来,因为一切都停止,而不是mysql。它总是给我以下错误:

ERROR: network docker_default has active endpoints

这是我的docker-compose.yml

version: '2'
services:
  php:
    build: php-docker/.
    container_name: php
    ports:
      - "9000:9000"
    volumes:
      - /var/www/:/var/www/
    links:
      - mysql:mysql
    restart: always

  nginx:
    build: nginx-docker/.
    container_name: nginx
    links:
      - php
      - mysql:mysql
    environment:
      WORDPRESS_DB_HOST: mysql:3306
    ports:
      - "80:80"

    volumes:
      - /var/log/nginx:/var/log/nginx
      - /var/www/:/var/www/
      - /var/logs/nginx:/var/logs/nginx
      - /var/config/nginx/certs:/etc/nginx/certs
      - /var/config/nginx/sites-enabled:/etc/nginx/sites-available
    restart: always

  mysql:
    build: mysql-docker/.
    container_name: mysql
    volumes:
      - /var/mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: pw
      MYSQL_USER: florian
      MYSQL_PASSWORD: pw
      MYSQL_DATABASE: database
    restart: always

  phpmyadmin:
    build: phpmyadmin/.
    links:
     - mysql:db
    ports:
     - 1234:80
    container_name: phpmyadmin
    environment:
     PMA_ARBITRARY: 1
     PMA_USERNAME: florian
     PMA_PASSWORD: pw
     MYSQL_ROOT_PASSWORD: pw
    restart: always

docker network inspect docker_default给我:

[
    {
        "Name": "docker_default",
        "Id": "1ed93da1a82efdab065e3a833067615e2d8b76336968a2591584af5874f07622",
        "Created": "2017-03-08T07:21:34.969179141Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {
            "85985605f1c0c20e5ee9fedc95800327f782beafc0049f51e645146d2e954b7d": {
                "Name": "mysql",
                "EndpointID": "84fb19cd428f8b0ba764b396362727d9809cd1cfea536e648bfc4752c5cb6b27",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

更新

似乎docker rm mysql -f停止了mysql容器,但网络正在运行。
删除了网络与docker network disconnect -f docker_default mysql但我很感兴趣,我是如何进入这种情况。有什么想法吗?

yzuktlbb

yzuktlbb1#

我解决了一个类似的问题,当我添加这个后,重命名服务在docker-compose.yml文件之前停止容器

docker-compose down --remove-orphans
9q78igpj

9q78igpj2#

我猜你在当前运行时编辑了docker-compose文件...?
有时候,如果你在执行docker-compose down之前编辑docker-compose文件,那么docker-compose将尝试停止的内容将不匹配。首先运行docker rm 8598560来停止当前运行的容器。从那里,确保在编辑文件之前执行docker-compose down。停止容器后,docker-compose up应该可以工作。

sxpgvts3

sxpgvts33#

您需要从网络断开陈旧端点的连接。首先,使用

docker network inspect <network>

您可以在输出JSON中找到端点:Containers -> Name。现在,只需使用以下命令强制断开它们:

docker network disconnect -f <network> <endpoint>
ekqde3dh

ekqde3dh4#

不幸的是,上面没有一个对我有用。重新启动Docker服务解决了这个问题。

bpzcxfmw

bpzcxfmw5#

这对我很有效。systemctl restart docker

ego6inou

ego6inou6#

我碰巧遇到了这个错误消息,因为我有两个网络具有相同的名称(复制/粘贴错误)。
我做了什么来修复它:

  • docker-compose down-忽略错误
  • docker network list-注意是否有任何容器正在使用它,并在必要时停止
  • docker network prune删除所有悬空网络,尽管您可能只需要docker network rm <network name>
  • 将第二个网络重命名为唯一名称
  • docker-compose up
lyr7nygr

lyr7nygr7#

服务Docker重启
然后正常删除网络
Docker网络rm [网络名称]

llew8vvj

llew8vvj8#

在同一个示例上运行异常的几十个服务(并行)时很少发生此问题,但不幸的是,docker-compose无法建立这些容器的部署/重建操作,因为“active network interface"”被绑定并卡住。

我还启用了运行标志,例如:

  • force-recreate(重新创建容器,即使其配置和映像未更改)或
  • remove-orphans标志(删除未在Compose文件中定义的服务的容器。)

但没有用

最终我得出结论,重启docker引擎是最后的手段- docker关闭了所有与docker守护进程关联的网络连接(容器之间和API之间的连接)-这个动作解决了这个问题(sudo service docker restart

aydmsdu9

aydmsdu99#

为了完整起见,我遇到了同样的问题,docker compose down --remove-orphans为我解决了这个问题。我很好奇一开始发生了什么,对我来说,这归结为在我运行命令的目录中有多个docker组合YAML文件。
当我显式地指定构建服务的组合文件时,它可以正常工作。
例如
你所在的目录中有两个docker compose文件,docker-compose-1.ymldocker-compose-2.yml,你使用第一个文件构建服务。
docker compose -f docker-compose-1.yml up --build -d
如果你运行docker compose down,它将引发错误。一旦指定了文件名,它就会按预期关闭容器。
docker compose -f docker-compose-1.yml down

相关问题