假设我们有一个dockerfile,其中包含一个指向BaseImage的基本图像指令:
FROM BaseImage
...
有没有什么方法可以检测自上次构建以来BaseImage是否已被修改,所以我们可以避免再次构建图像?
答案 0 :(得分:0)
之前有一个问题类似于问“How to automatically update your docker containers, if base-images are updated”。
没有标准方法,但回答(bsuttor)的用户提交了他用来检查Docker仓库中基本映像更新的脚本:
我们使用一个脚本来检查正在运行的容器是否以最新映像启动。我们还使用upstart init脚本来启动docker镜像。
#!/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看起来像
docker run -t -i --name $NAME $im /bin/bash