Docker堆栈-始终从hub.docker.com

时间:2019-07-09 16:02:48

标签: docker-compose

摘要:在AWS / EC2环境中执行“ docker stack deploy”时,将使用本地(旧)映像。我该如何拒绝这种行为,以使“ docker stack”使用来自hub.docker.com的新映像?作为一种解决方法,我首先在执行“ docker stack deploy”之前从index.docker.com对映像进行“ docker pull”。是否需要此额外步骤?

情况: 在Jenkins服务器上(不在AWS / EC2上),我具有以下构建步骤:

  • Maven构建
  • docker登录-u $ {env.DOCKER_USERNAME} -p $ {env.DOCKER_PASSWORD}
  • docker build -t local-username / image-name:latest
  • docker标记本地用户名/映像名dockerhub用户名/映像名:最新
  • docker push dockerhub-username / image-name:latest

Jenkinsfile中的下一步是通过AWS环境上的安全外壳(ssh)执行的:

  • docker stack deploy -c docker-compose.yml堆栈名

当我执行此Jenkins作业时,泊坞窗映像是从AWS上的本地映像存储库中获取的。我想使用放在hub.docker.com上的最新图像。

当我在“ docker stack deploy”之前插入以下操作时,一切都会顺利进行:

  • docker pull index.docker.io/dockerhub-username/image-name:latest

我的问题:

  • 为什么我需要执行此额外的“ docker pull”操作?
  • 如何删除此操作?只需在docker-compose.yml文件中的图像前面添加“ index.docker.io”?还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

当然,不需要额外的docker pull。

对您有什么帮助?

  • @Tarun的答案可能有用。
  • 或者只是命名Docker Hub注册表。在docker-compose.yml(堆栈)文件中使用以下行
servicename:
  image: index.docker.io/dockerhub-username/image-name

那对您有帮助。

这可能是由于您在本地或在单独的Jenkins服务器上构建,将映像推送到Docker集线器并在EC2的远程Shell上启动这一事实。在该EC2上,只有当前图像。

我为您尝试了上述解决方案,并且有效。

您可以只执行'docker stack deploy'并使用正确的映像。