故障 - 启动容器时报错

  • 作者:KK

  • 发表日期:2019.10.21

  • 更新记录:

    • 2020.05.23 增加报错3

报错1:docker: Error response from daemon: driver failed programming external connectivity on endpoint ubun

  • 发生场景:这是发生成 Windows 下,我一般是在重新开机(特别是每天上班开机)后,偶尔会遇到。

  • 原因追遡:据了解是因为 Windows 下的 docker 在重新分配内存时,没有完全清理环境导致的

  • 解决方案:

    1. 退出 Docker Desktop,打开任务管理器找到 com.docker.backend.exe 这个进程并把它结束掉,过5秒左右它就会自动重生出现在任务管理器中,此时再启动 Docker Desktop 即可继续用你的命令启动容器。

    2. 重启机器。


报错2:: not found

  • 发生场景:容器的启动 command 为sh /path/to/xxx.sh,就是用 sh 执行一个 shell 脚本。

  • 原因:我暂时也不好说,大概是脚本里有一些 sh 不能识别的语法,而 bash 是比 sh 更先进的脚本执行器,能识别更多语法。

  • 解决方案:

    换成 bash 来跑脚本就好了,比如bash /path/to/xxx.sh


报错3:cannot start service xxx: network yyy not found

  • 发生场景:我在docker-compose up启动容器的时候遇到这样的报错

  • 原因:大概就是因为不知什么原因,docker 创建的的虚拟网络被删除了,然而这些容器上次启动的时候引用过这个网络,现在再启动就引用不成功则报错。

  • 解决方案:

    执行docker system prune会整理这些信息,再重新启动容器。