ベースイメージが更新された場合に、Docker コンテナを自動的に更新する方法 質問する

ベースイメージが更新された場合に、Docker コンテナを自動的に更新する方法 質問する

に基づく簡単なコンテナがあるとしますubuntu:latest。現在、セキュリティ アップデートがあり、ubuntu:latestdocker リポジトリで更新されています。

  1. ローカルイメージとそのコンテナが遅れて実行されているかどうかはどうすればわかりますか?

  2. ローカルイメージとコンテナを自動的に更新して、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

おすすめ記事