あるアプリケーションの環境を整備する際に、dockerのパッケージのバージョンを固定する必要がありました。
ここにその時のメモを残します。
パッケージの保持・ロックとは
パッケージの保持・ロックとは、特定のパッケージのバージョンを固定して、システム全体のアップデート時にそのパッケージだけはアップデートされないようにすることを指します。これにより、システムの安定性を保ちつつ、特定のアプリケーションやサービスの動作を確保することができます。
必要性について
新しいバージョンのパッケージは、新機能やセキュリティアップデートを提供してくれる反面、既存のシステムに影響を及ぼす可能性があります。このようなリスクを避けるためにも、特定のパッケージを保持・ロックすることが有用です。
apt-mark
apt-mark はパッケージが自動的にインストールされたかどうかのマークを変更するコマンドです。
使い方
パッケージ hold 関連
apt-mark hold |
バージョン固定 |
apt-mark unhold |
バージョン固定解除 |
apt-mark showhold | バージョン固定状態確認 |
インストール済みパッケージの確認
apt-mark showmanual | 手動でインストールしたパッケージの一覧を表示 |
apt-mark showauto | 自動的にインストールされたパッケージを、パッケージごとに改行して表示 |
docker のバージョンが維持できるか検証
この時の最新は Docker version 24.0.7 でした。
いったん古い Docker をインストール(upgrade前)
$ docker --version Docker version 20.10.21, build baeda1f
apt-mark hold
$ sudo apt-mark hold 'docker*' containerd.io docker.io はすでに保留に設定されています。 docker-ce はすでに保留に設定されています。 docker はすでに保留に設定されています。 docker-clean はすでに保留に設定されています。 docker-compose はすでに保留に設定されています。 docker-doc はすでに保留に設定されています。 docker-registry はすでに保留に設定されています。 docker2aci はすでに保留に設定されています。 docker-buildx はすでに保留に設定されています。 docker-compose-v2 はすでに保留に設定されています。 docker-buildx-plugin はすでに保留に設定されています。 docker-ce-cli はすでに保留に設定されています。 docker-scan-plugin はすでに保留に設定されています。 docker-compose-plugin はすでに保留に設定されています。 docker-ce-rootless-extras はすでに保留に設定されています。 containerd.io はすでに保留に設定されています。
apt-mark showhold
$ sudo apt-mark showhold containerd.io docker docker-buildx docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-clean docker-compose docker-compose-plugin docker-compose-v2 docker-doc docker-registry docker-scan-plugin docker.io docker2aci
apt dist-upgrade
$ sudo apt dist-upgrade -y パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 アップグレードパッケージを検出しています... 完了 Get more security updates through Ubuntu Pro with 'esm-apps' enabled: ansible patchelf Learn more about Ubuntu Pro at https://ubuntu.com/pro 以下のパッケージは保留されます: docker-ce docker-ce-cli rust-lldb アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 4 個。
docker バージョン確認(upgrade後)
$ docker --version Docker version 20.10.21, build baeda1f