【问题标题】:Docker compose can not start service network not found after restart dockerdocker compose 无法启动服务 network not found 重启 docker
【发布时间】:2018-12-16 22:50:38
【问题描述】:

我在 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


    【解决方案1】:

    网络已更改。我使用docker network prune 命令遇到了同样的问题。重新创建容器可以解决问题。 Docker 会再次为新容器设置网络。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        可能有一些旧的容器实例没有被删除。检查实例

        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 文件启动你的容器 这对我有用。希望能帮助到你!

        【讨论】:

          【解决方案4】:

          我找到了一个可能的解决方案,如下编辑 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 服务时,容器启动时没有错误。

          【讨论】:

          • 这个 GitHub issue 正在跟踪同样的问题。将 networks 部分添加到 docker-compose 为我解决了这个问题。
          猜你喜欢
          • 2020-06-30
          • 2018-05-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-09
          • 2020-01-28
          • 2018-01-13
          • 2018-04-20
          相关资源
          最近更新 更多