🐘
DockerHubからLatestタグで取得したpostgresイメージのバージョンを確認する
はじめに
postgresqlのイメージをdockerで使おうと思いcomposeファイルで指定したのですが
postgres:latest
で指定、pullしました。
検証する分にはまあうまく動けばいいのですが、
バージョンが不明だとのちに環境を再現できない可能性があり、手間です。
ということで調査する方法をメモします。
タイトルにpostgres
とありますが、すべてのイメージで共通だと思います。
① docker inspectでそれっぽい情報を探す
docker inspect
コマンドでコンテナイメージの詳細情報を取得できます。
だいたい環境変数にバージョンの記載がされているイメージです、みてみましょう。
$ docker image inspect --format '{{ json .Config.Env }}' postgres:latest | jq
[
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/postgresql/15/bin",
"GOSU_VERSION=1.16",
"LANG=en_US.utf8",
"PG_MAJOR=15",
"PG_VERSION=15.3-1.pgdg120+1",
"PGDATA=/var/lib/postgresql/data"
]
15.3-1
とあります。
確定ではないですがこれがバージョンっぽいです。
② コンテナの中に入って調査する
これが確実でしょう。
コンテナ立ててはいって確認すればよいです。
$ docker run --name some-postgres -e POSTGRES_PASSWORD=secretpassword -d postgres:latest
$ docker exec -it some-postgres psql -U postgres -c 'SELECT version();'
version
---------------------------------------------------------------------------------------------------------------------
PostgreSQL 15.3 (Debian 15.3-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
(1 row)
こちらも15.3-1
とあるため、無事バージョン特定と考えられます!
正確にコンテナイメージが管理されているのであれば①、
念の為②を覚えておくとよさそうですね。
③ DIGESTから検索する
inspectコマンドでイメージのDIGESTを取得できます。
$ docker inspect --format='{{index .RepoDigests 0}}' postgres:latest
postgres@sha256:362a63cb1e864195ea2bc29b5066bdb222bc9a4461bfaff2418f63a06e56bce0
このDIGESTと一致しているイメージをdockerhubから探し、ベースイメージなりパッケージを調査すればOKです。
大変ですし、latestのイメージは更新されるので実用的ではなさそうです。
参考
うーんDIGESTが一致しないパターンもある様子、一応メモまで
Discussion