0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

株式会社シンプルウェイAdvent Calendar 2024

Day 9

使い回している大元の Docker イメージ最新版を使う方法

Posted at

Docker で開発していると、latest等を指定していても、
下記のように N ヶ月前のようなイメージが残る事が多いかと思います。

$ docker image ls
rockylinux      9-minimal     dfaa211c6b30   12 months ago   118MB
rockylinux      9.3-minimal   dfaa211c6b30   12 months ago   118MB
rockylinux      8.9-minimal   f63d8d2889fd   12 months ago   93.3MB

新しいイメージを使いたい場合、
古いイメージを消してしまって、新しいイメージを pull すれば良いのかな?
と思うじゃないですか。

$ docker rmi f63d8d2889fd
Error response from daemon: conflict: unable to delete f63d8d2889fd
(cannot be forced) - image has dependent child images

はい、消せません。上記の例の場合、
Rocky Linux 8.9-minimal を元にビルドした関連イメージがあるので、
関連イメージを全て消さないとダメな訳です。

携わっているプロジェクトが多いと、
依存する全てのイメージを削除してビルドし直すのはしんどい...

一時的な解決策

docker-compose.yml や Dockerfile は新しいプロジェクトとしてコピーし、
コンテナ名は適当に新しい名前にします。

それから目的の Docker Hub ページにアクセスしてダイジェスト値をコピーします。

copy-digest.png

新しいDockerfile の FROM の後ろに「@」をつけてダイジェスト値を貼り付ける

Dockerfile
- FROM rockylinux:9.3-minimal
+ FROM rockylinux:9.3-minimal@sha256:305de618a5681ff75b1d608fd22b10f362867dff2f550a4f1d427d21cd7f42b4

docker compose up -d 等で、
今回の例では、6ヶ月前に公開されたイメージを使う事ができます。

RockyLinux Minimal 何か脆弱性でてますね... あとで見ておこう...。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?