docker compose构建与深映像名称挂起

docker compose构建与深映像名称挂起,docker,docker-compose,Docker,Docker Compose,我在docker compose设置中遇到问题,导致其无法使用: docker-compose.yml: services: something: image: someone/a.b.c.d build: context: . 当我运行docker compose build时,它将永远冻结(或者只要我的耐心持续15分钟以上) 似乎将图像名称更改为 image: someone/a.b:c.d 我会修好的 我的第一个版本错了吗?图像名称的约定是什么

我在docker compose设置中遇到问题,导致其无法使用:

docker-compose.yml:

services:
  something:
    image: someone/a.b.c.d
    build:
      context: .

当我运行docker compose build时,它将永远冻结(或者只要我的耐心持续15分钟以上)

似乎将图像名称更改为

    image: someone/a.b:c.d
我会修好的

我的第一个版本错了吗?图像名称的约定是什么


谢谢更新:

根据docker compose版本
docker compose版本1.22.0下的文档及其工作原理,该名称似乎有效

docker构建也没有问题

docker build -t someone/a.b.c.d .

检查您的docker compose版本

扩展描述 映像名称由斜杠分隔的名称组件组成,可以选择以注册表主机名作为前缀。主机名必须符合标准DNS规则,但不能包含下划线。如果存在主机名,则可以选择在主机名后面加一个端口号,格式为:8080。如果不存在,则默认情况下,该命令使用位于registry-1.Docker.io的Docker公共注册表。名称组件可能包含小写字母、数字和分隔符。分隔符定义为句点、一个或两个下划线或一个或多个破折号。名称组件不能以分隔符开头或结尾

标记名必须是有效的ASCII,并且可以包含小写和大写字母、数字、下划线、句点和破折号。标记名不能以句点或破折号开头,最多可包含128个字符。


更新:

根据docker compose版本
docker compose版本1.22.0下的文档及其工作原理,该名称似乎有效

docker构建也没有问题

docker build -t someone/a.b.c.d .

检查您的docker compose版本

扩展描述 映像名称由斜杠分隔的名称组件组成,可以选择以注册表主机名作为前缀。主机名必须符合标准DNS规则,但不能包含下划线。如果存在主机名,则可以选择在主机名后面加一个端口号,格式为:8080。如果不存在,则默认情况下,该命令使用位于registry-1.Docker.io的Docker公共注册表。名称组件可能包含小写字母、数字和分隔符。分隔符定义为句点、一个或两个下划线或一个或多个破折号。名称组件不能以分隔符开头或结尾

标记名必须是有效的ASCII,并且可以包含小写和大写字母、数字、下划线、句点和破折号。标记名不能以句点或破折号开头,最多可包含128个字符。


如果您设置了
image
build
,我认为docker compose将首先尝试运行映像,如果没有找到,它将尝试使用您的上下文构建映像。现在,docker将对上下文进行tar,并将其发送到docker守护进程。如果你有很多文件或者很大的文件,这需要一段时间。也许这就是你的问题。在你的图像中,你应该把标签放在冒号后面,默认情况下,它被认为是
最新的
@charli。谢谢,这正是我想要的行为。但是问题与上下文的大小无关,因为唯一的区别是图像的名称/标记尝试以docker run someone/a.b.c.d
的身份运行图像,它在做什么吗?另外,用
docker images
检查您的本地图像,我猜您有
someone/a.b
标记了
c.d
,但是您没有
someone/a.b.c.d
如果您设置
image
build
,我想docker compose会首先尝试运行图像,如果未找到,它将尝试使用您的上下文构建图像。现在,docker将对上下文进行tar,并将其发送到docker守护进程。如果你有很多文件或者很大的文件,这需要一段时间。也许这就是你的问题。在你的图像中,你应该把标签放在冒号后面,默认情况下,它被认为是
最新的
@charli。谢谢,这正是我想要的行为。但是问题与上下文的大小无关,因为唯一的区别是图像的名称/标记尝试以docker run someone/a.b.c.d
的身份运行图像,它在做什么吗?另外,请使用
docker images
检查您的本地图像,我猜您有
someone/a.b
标记了
c.d
,但您没有
someone/a.b.c.d
,谢谢您的澄清。事实上,我使用的是最新版本的everything(docker,docker compose),这不是大上下文的问题,因为行为只取决于冒号所在的位置。我真的不喜欢仅仅通过改变我的图片的名称就让它变得如此,尽管它让我进步了至少你能在你的末端修复或者上下文足够花这么长的时间吗?谢谢你的澄清。事实上,我使用的是最新版本的everything(docker,docker compose),这不是大上下文的问题,因为行为只取决于冒号所在的位置。我真的不喜欢仅仅通过改变我的图片的名称就让它变得如此,尽管它让我进步了至少你能在你的末端修复或者上下文足够花这么长的时间吗?