首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果基本镜像被更新,如何自动更新docker容器

如果基本镜像被更新,如何自动更新docker容器
EN

Stack Overflow用户
提问于 2014-10-17 18:56:29
回答 16查看 147.5K关注 0票数 247

假设我有一个基于ubuntu:latest的普通容器。现在有了安全更新,并且在docker存储库中更新了ubuntu:latest

  1. 我如何知道本地映像及其容器正在运行?
  2. 是否有一些最佳实践可用于自动更新本地映像和容器以跟踪docker存储库更新,这实际上将为您提供与在传统docker上运行无人值守升级相同的好处
EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2018-08-19 01:32:32

其中一种方法是通过您的CI/CD系统进行驱动。一旦您的父映像构建完成,就可以使用该父映像来扫描git repos中的映像。如果找到了,你就会发送一个拉请求,以跳转到新版本的图像。如果所有测试都通过,则拉取请求将被合并,您将拥有一个基于更新的父映像的新的子映像。可以在这里找到采用此方法的工具的示例:https://engineering.salesforce.com/open-sourcing-dockerfile-image-update-6400121c1a75

如果您不能控制您的父映像,就像您依赖于官方ubuntu映像时的情况一样,您可以编写一些工具来检测父映像标记或校验和中的更改(不是同一件事,标记是可变的),并相应地调用子映像构建。

票数 12
EN

Stack Overflow用户

发布于 2014-10-24 21:31:06

我们使用一个脚本来检查正在运行的容器是否使用最新的镜像启动。我们还使用upstart init脚本来启动docker镜像。

代码语言:javascript
复制
#!/usr/bin/env bash
set -e
BASE_IMAGE="registry"
REGISTRY="registry.hub.docker.com"
IMAGE="$REGISTRY/$BASE_IMAGE"
CID=$(docker ps | grep $IMAGE | awk '{print $1}')
docker pull $IMAGE

for im in $CID
do
    LATEST=`docker inspect --format "{{.Id}}" $IMAGE`
    RUNNING=`docker inspect --format "{{.Image}}" $im`
    NAME=`docker inspect --format '{{.Name}}' $im | sed "s/\///g"`
    echo "Latest:" $LATEST
    echo "Running:" $RUNNING
    if [ "$RUNNING" != "$LATEST" ];then
        echo "upgrading $NAME"
        stop docker-$NAME
        docker rm -f $NAME
        start docker-$NAME
    else
        echo "$NAME up to date"
    fi
done

init看起来像

代码语言:javascript
复制
docker run -t -i --name $NAME $im /bin/bash
票数 140
EN

Stack Overflow用户

发布于 2016-03-17 03:41:36

一种“docker方式”是使用docker hub automated builds。当重建上游容器时,Repository Links功能将重建您的容器,并且Webhooks功能将向您发送通知。

看起来webhooks仅限于HTTP POST调用。你需要设置一个服务来捕获他们,或者使用其中一个帖子来发送电子邮件。

我还没有研究过它,但是新的Docker Universal Control Plane可能会有一个检测更新容器和重新部署的功能。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26423515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档