Docker - 超出最大深度

use*_*721 8 docker docker-compose

所以我使用这个例子:

https://github.com/mcmoe/mssqldocker

为了创建SQL Server映像并使用数据加载它.我有几个sql脚本,我运行容器时运行.

但是,我在构建映像时开始出现此错误:

Step 7/9 : ENTRYPOINT ./entrypoint.sh
 ---> Running in c8c654f6a630
max depth exceeded
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题,我重新启动了docker甚至更新了它.我读了一些关于125层的东西?任何人都可以解释这个原因和潜在的解决方案吗?

我发现这个命令运行:

docker history microsoft/mssql-server-linux:latest | wc -l
 312
Run Code Online (Sandbox Code Playgroud)

我的docker-compose yml:

version: "3"
services:
  mssql:
      build: .
      image: 'microsoft/mssql-server-linux'
      ports:
          - '1433:1433'
      environment:
          - ACCEPT_EULA=Y
          - SA_PASSWORD=Abcgfgh123!
      volumes:
          - db_volume:/var/lib/mssql/data
volumes:
  db_volume:
Run Code Online (Sandbox Code Playgroud)

Bru*_*uno 17

使用以下命令删除与您的 dockerfile 相关的所有本地 docker 图像,然后重试。

$ docker rmi -f $(docker images -a -q)
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 11

定义中a 的image参数具有双重含义,具体取决于参数的存在.servicedocker-compose.ymlbuild

  • 如果没有build节,那么image只需要拉动并运行.

  • 如果您有一个build节,image将是您的构建图像被标记为的名称,并运行.

通过命名您构建的图像microsoft/mssql-server-linux,这与FROM microsoft/mssql-server-linux您每次在其自身上层叠构建的图像相同.

原始构建在"官方"开始,microsoft/mssql-server-linux但随后每个后续构建将从microsoft/mssql-server-linux附加到的本地映像开始,直到最终达到存储驱动程序的最大层数.

对您构建的所有图像使用自己的命名空间:

version: "3"
services:
  mssql:
      build: .
      image: 'user3437721/mssql-server-linux'
Run Code Online (Sandbox Code Playgroud)


mbo*_*007 7

我已经在接受的答案中使用了自定义图像名称,但我仍然遇到了这个问题。

为了克服这个错误,我发现我需要使用以下命令删除所有未使用的(与任何容器无关)和悬空的(制作新图像后的旧图像)docker 图像:

docker image prune -a
Run Code Online (Sandbox Code Playgroud)

https://linuxhandbook.com/remove-docker-images/