Docker compose重启docker后无法启动服务network not found

问题描述 投票:0回答:5

我在 Windows 10 Pro 中使用 docker for windows(版本 18.03.0-ce-win59 (16762))。运行命令

docker-compose -up -d
后,所有容器都运行正常。问题是当我重新启动 docker 服务时。然后,重新启动后,所有容器都会停止,当我运行命令
docker-compose start -d
时,会显示以下错误:

Error response from daemon: network ccccccccccccc not found

我不知道发生了什么。当我使用

run
--restart=always
选项运行容器时,一切都按预期工作。重启后没有显示错误。

这是 docker-compose 文件:

version: '3'

services:
  service_1:
    image: image1
    restart: always
    build:
      context: C:/ProgramData/Docker/volumes/foo2
      dockerfile: Dockerfile
      args:
        ENTRY: "1"
    volumes:
      - C:/ProgramData/Docker/volumes/foo1:C:/foo1
      - C:/ProgramData/Docker/volumes/foo2:C:/foo2
  service_2:
    image: image2
    restart: always
    build:
      context: C:/ProgramData/Docker/volumes/foo2
      dockerfile: Dockerfile
      args:
        ENTRY: "2"
    volumes:
      - C:/ProgramData/Docker/volumes/foo1:C:/foo1
      - C:/ProgramData/Docker/volumes/foo2:C:/foo2
  service_3:
    image: image3
    restart: always
    build:
      context: C:/ProgramData/Docker/volumes/foo2
      dockerfile: Dockerfile
      args:
        ENTRY: "4"
    volumes:
      - C:/ProgramData/Docker/volumes/foo1:C:/foo1
      - C:/ProgramData/Docker/volumes/foo2:C:/foo2

dockerfile 是这样的:

FROM microsoft/dotnet-framework:3.5

ARG ENTRY
ENV my_env=$ENTRY

WORKDIR C:\\foo2

ENTRYPOINT C:/foo2/app.exe %my_env%
windows docker docker-compose docker-for-windows
5个回答
22
投票

网络发生变化。我使用

docker network prune
命令来解决同样的问题。重新创建容器可以解决问题。 Docker 将为新容器再次设置网络。

#remove all containers
docker rm $(docker ps -qa)
#or
docker system prune

10
投票

可能有一些旧的容器实例未被删除。使用

检查实例
docker container ls -a

如果您有一些未删除的实例,您可能会得到这样的输出

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS               NAMES
8b4678e6666b        b4a75a01d539        "/bin/sh -c 'eval `s…"   6 weeks ago         Exited (1) 6 weeks ago                       zealous_allen
ee862a3418f2        1eaaf48e9b42        "/bin/sh -c 'eval `s…"   6 weeks ago         Exited (1) 6 weeks ago                       jolly_torvalds

通过容器id删除容器

docker container rm 8b4678e6666b
docker container rm ee862a3418f2 

现在使用 docker-compose 文件启动容器 这对我有用。希望能帮助到你!


5
投票

我找到了一个可能的解决方案,编辑 docker-compose.yml 文件,如下所示:

version: '3'

services:
  cm04:
    image: tnc530_cm04
    networks:
      - test
    privileged: false
    restart: always
    build:
      context: C:/ProgramData/Docker/volumes/adontec/LSV2_Lib/Heidenhain/TNC530
      dockerfile: Dockerfile
      args:
        ENTRY: "1"
    volumes:
      - C:/ProgramData/Docker/volumes/sqlite:C:/sqlite
      - C:/ProgramData/Docker/volumes/adontec/LSV2_Lib/Heidenhain/TNC530/bin/x86/Release:C:/adontec
  cm06:
    image: tnc620_cm06
    networks:
      - test
    privileged: false
    restart: always
    build:
      context: C:/ProgramData/Docker/volumes/adontec/LSV2_Lib/Heidenhain/TNC620
      dockerfile: Dockerfile
      args:
        ENTRY: "2"
    volumes:
      - C:/ProgramData/Docker/volumes/sqlite:C:/sqlite
      - C:/ProgramData/Docker/volumes/adontec/LSV2_Lib/Heidenhain/TNC620/bin/x86/Release:C:/adontec
  cm08:
    image: tnc620_cm08
    networks:
      - test
    privileged: false
    restart: always
    build:
      context: C:/ProgramData/Docker/volumes/adontec/LSV2_Lib/Heidenhain/TNC620
      dockerfile: Dockerfile
      args:
        ENTRY: "4"
    volumes:
      - C:/ProgramData/Docker/volumes/sqlite:C:/sqlite
      - C:/ProgramData/Docker/volumes/adontec/LSV2_Lib/Heidenhain/TNC620/bin/x86/Release:C:/adontec

networks:
  test:
    external:
      name: nat

如您所见,我创建了一个名为

test
的网络,与外部网络
nat
链接。现在,当我重新启动 docker 服务时,容器将正常启动。


1
投票

或者,您可以打开 docker 应用程序并手动删除容器。然后在终端上运行 docker-compose up 。现在它应该可以工作了。转到端口 9000 或 9001 或您正在使用的任何端口,看看 minio 是否实际运行。


0
投票

这解决了我的问题:

docker network connect existingNetworkName containerName
© www.soinside.com 2019 - 2024. All rights reserved.