に基づく簡単なコンテナがあるとしますubuntu:latest
。現在、セキュリティ アップデートがあり、ubuntu:latest
docker リポジトリで更新されています。
ローカルイメージとそのコンテナが遅れて実行されているかどうかはどうすればわかりますか?
ローカルイメージとコンテナを自動的に更新して、Dockerリポジトリの更新に従うためのベストプラクティスはありますか?これは、実際には、従来のUbuntuマシンで無人アップグレードを実行するのと同じ利点を提供します。
ベストアンサー1
実行中のコンテナが最新のイメージで起動されているかどうかを確認するスクリプトを使用します。また、docker イメージを起動するために upstart init スクリプトも使用します。
#!/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