【问题标题】:docker-compose tries to pull already existing imagesdocker-compose 尝试拉取已经存在的图像
【发布时间】:2016-01-30 21:23:29
【问题描述】:

我有一个docker-compose.yml 文件,它定义了一个服务及其图像。

service:
    image: my_image

现在,我运行 docker-compose up 我收到以下消息:

$ docker-compose up    
Pulling service (my_image:latest)...
Pulling repository docker.io/library/my_image
ERROR: Error: image library/my_image:latest not found

这是正确的,在这种情况下my_image 不在 docker hub 上。但我之前用docker build -t my_image .(在不同的文件中)创建了它,它列在docker images中。

有什么我想告诉 docker-compose,不要在 docker.io 注册表/集线器中查找图像的吗?

[edit] docker 客户端和服务器版本是1.9.1,docker-compose 版本是1.5.2

我正在远程机器上通过 HTTP-API 运行 docker-compose(以及 docker),不知道这是否有什么不同。

【问题讨论】:

  • 我刚试过这个,它有效。我为Dockerfiledocker-compose.yml 使用了不同的文件夹。您确定图像名称吗?你用的是什么版本的docker?我正在使用 1.9,它可以工作。如果您使用的是以前的版本,也许您也需要包含该版本
  • 如果你尝试运行一个不存在的镜像,它会尝试拉取它。我认为您可能在某处出现拼写错误,导致它尝试提取不同的图像。
  • 我已经验证了拼写,甚至尝试了添加和不添加标签my_image:latest,它没有任何区别。

标签: docker docker-compose dockerhub


【解决方案1】:

如果您在本地或除 docker hub 之外的任何地方有图像,您需要使用 build 和 Dockerfile 的路径或 url。所以基本上当我们关闭 dockerhub 工作时,我们将图像更改为路径!

ubuntu:
  container_name: ubuntu
  build: /compose/build/ubuntu
  links:
    - db:mysql
  ports:
    - 80:80

在这个例子中,我使用的是我自己的 Ubuntu Dockerfile,它位于构建路径中。该文件应该像正常一样命名为 Dockerfile,您只需指定它所在文件夹的路径。

【讨论】:

  • 图像的创建发生在不同的位置。我正在通过 remote-api 运行 docker-compose 命令,并希望只是“重用”已经在主机上创建的图像。除了手动运行docker run 命令之外,没有其他办法吗?
猜你喜欢
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 2022-01-24
  • 2016-11-14
  • 2022-01-06
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多