Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“图像”标签在docker compose中是什么意思?_Docker_Docker Compose - Fatal编程技术网

“图像”标签在docker compose中是什么意思?

“图像”标签在docker compose中是什么意思?,docker,docker-compose,Docker,Docker Compose,我无法准确理解以下docker compose文件中图像选项的用法 在api服务中,图像标记看起来像是用于将构建的api图像命名为服务器 然而在redis服务中,图像标签看起来像是告诉docker从dockerhub中提取哪个图像。 最后,工人服务的形象是什么?没有用于引用dockerfile的构建标记,也没有正在提取的图像。也没有定义应用程序映像,所以真的很困惑这是如何工作的? 正如您所观察到的,image选项根据其在compose文件中的指定方式有两种不同的定义 1如果指定了映像选项而未指定

我无法准确理解以下docker compose文件中图像选项的用法

在api服务中,图像标记看起来像是用于将构建的api图像命名为服务器 然而在redis服务中,图像标签看起来像是告诉docker从dockerhub中提取哪个图像。 最后,工人服务的形象是什么?没有用于引用dockerfile的构建标记,也没有正在提取的图像。也没有定义应用程序映像,所以真的很困惑这是如何工作的?
正如您所观察到的,image选项根据其在compose文件中的指定方式有两种不同的定义

1如果指定了映像选项而未指定生成,则compose会尝试从本地或存储库中提取映像

2如果同时指定了图像和生成选项,则使用此名称组合标记生成的图像

如果没有标签,则假定最新标签为标签。在worker服务中,除非本地或远程存储库中有app:latest映像可用,否则它将抛出错误


关于图像选项的更多信息。

我认为有关的文档对此进行了很好的解释

区别主要在于图像是否存在。如果不存在图像标记,则生成将使用图像标记创建图像,并使用图像标记值对其命名

要直接回答您的问题:

如果一个映像不存在,api服务将构建一个名为server的映像 redis服务将运行一个映像'redis:latest'。如果它存在于本地,则将使用该图像。如果不是,它将默认为dockerhub并将其拉入。 worker服务使用名为app的映像。
前两分就拿到了。但仍然对3感到困惑。存储库中没有应用程序映像,本地也没有应用程序映像。那么,工人服务从哪里构建映像呢?它没有构建任何映像。如果没有映像,它应该失败。工人服务运行吗?@franklinsijo是的,工人服务运行得很好!这对我来说是最令人惊讶的。如果你看到工人在你,例如docker撰写ps时运行,那么你必须有一个名为app local的图像。docker image ls | grep app谢谢!是的,你是对的,我在本地有一个名为app的旧图像。谢谢你们俩的帮助。
version: '3'


services:
  api:
    build: ./server
    image: server
    ports:
      - "5000:5000"
    volumes:
      - ./server:/usr/src/server
    command: "python -m server.app"
    restart: always
    env_file:
      - ./dev.env
  redis:
    image: redis:latest
    expose:
      - "6379"
    command: ["sh", "-c", "redis-server --appendonly yes"]
    restart: always
    depends_on:
      - api 
  worker:
    image: app
    volumes:
      - .:/app
    command: "python -m server.worker"
    restart: always
    env_file:
      - ./dev.env
    depends_on:
      - redis