如何使用公共和私有映像创建docker-compose.yml文件?

时间:2018-12-02 08:54:46

标签: docker docker-compose dockerhub azure-container-service

我正在尝试为工作中的特定开发人员团队创建docker-compose.yml文件。我已经将我们的私有映像上载到私有注册表(Azure容器注册表),并且可以/:

接下来,我正在尝试测试如何让该特定团队的开发人员运行docker-compose文件,该文件会拉下所有图像,然后全部启动。

我发现开发人员需要这样做:

-> docker login -u <admin username of my registry> <domain of the registry>
-> docker-compose pull

这会拉出我的私有映像(从ACR的私有注册表中),但不会删除Docker Hub中的任何映像(公共注册表)。

  • Q1:可以混合搭配吗?
  • Q2:还有另一种方法可以使“用户”成为只读用户。我已经读过一些关于service accounts的东西,但是确实使人困惑,而且我不知道该怎么做/如果这是正确的方法。

这是我的示例docker-compose文件的摘要,其中包含公共图像和私有图像。请注意我如何尝试完全限定图像域...

version: '3.5'

services:

ravendb.data:
  image: hub.docker.com/ravendb/ravendb
  expose: 
    - "8080"
  networks:
    - backend
  container_name: ravendb.data
  labels:
    - "traefik.enable=false"

accounts.api:
  image: <snip>.azurecr.io/<snip>/<snip>
  networks:
<rest all snipped>

欢呼!

1 个答案:

答案 0 :(得分:1)

第一季度-两个问题,有些相关-

  1. 您的Docker Hub注册表FQDN在RavenDB image指令中错误-hub.docker.com是人类可读的网站,公共Docker注册表位于registry.hub.docker.com或{{1} }(将index.docker.io附加到那些uri上以获取API)。

  2. 您不需要完整的公共注册表FQDN即可从公共注册表中拉取-这是默认设置,并且docker命令默认情况下会从那里拉出,如果它们在图像名称。

第二季度-我不确定Azure容器注册表的工作方式,但是如果您无法创建只读用户,我会感到惊讶。普通注册表是基于REST的API服务器,可以通过在内部设置其权限或通过在反向代理中放置POST / PUT / DELETE和PATCH谓词来控制它,而POST / PUT / DELETE和PATCH谓词需要与GET谓词不同的已认证用户