【问题标题】:Automatically pull docker image container自动拉取 docker 镜像容器
【发布时间】:2019-07-19 11:29:15
【问题描述】:

我有一个安装了 docker 的 linux 裸机服务器。

我在我的计算机上处​​理一个 asp.net 核心项目。

我的源代码被推送到 github 上。

每次我提交和推送某些内容时,github 都会在我的 docker hub 帐户上触发一个 webhook。

Docker hub 为我构建了一个包含我的 asp.net 核心应用程序二进制文件的新映像。 (docker hub 也运行测试)

当我在我的服务器上手动拉取这张图片时,它可以正常工作。

我的问题是如何自动执行此操作?我的服务器有没有办法“检测”到 docker hub 包含新版本的图像并运行一些东西来拉这个图像并自动触发数据库迁移?

谢谢

【问题讨论】:

  • 您是在远程机器上工作还是在本地系统上工作?
  • 没有。除非您要求它再次拉取映像,否则 Docker 不会做任何事情。也不应该。在各种情况下,您可能会推送新映像,但不想立即或根本不想更新正在运行的容器。由您决定何时以及如何发生。
  • 谢谢,但是通常用于拉新图像而无需连接 throw ssh 的方法是什么?
  • 运行一个 cronjob 来拉取图像?你想达到什么目标?
  • 我不是 docker 专家,但这不就是 watchtower 所做的吗?

标签: docker asp.net-core continuous-integration devops continuous-deployment


【解决方案1】:
  • 如果你有一个公共 ip 可以让外部互联网如dockerhub 访问你,那么你可以使用Docker Hub Webhooks:

    你可以像下图一样创建webhook,设置外部可以访问你的服务的url,当图片被推送时,它会发布一些json数据到你提供的url,一个示例数据here,然后你自己的url可以接收数据,随心所欲地做相关事情。

    而且,如果你使用 jenkins,有很多插件可以帮助你做类似的事情:参考Triggering Docker pipelines with Jenkins,也可以参考Polling Docker Registries for Image Changes

  • 如果您没有 dockerhub 可以访问的公共 ip,那么我想您必须轮询 dockerhub 以查看那里是否有新图像...

【讨论】:

    猜你喜欢
    • 2022-11-30
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2015-04-12
    相关资源
    最近更新 更多