Help us understand the problem. What is going on with this article?

一括してDockerイメージを最新にアップデートしたい

More than 5 years have passed since last update.

pull済みのDockerコンテナイメージを一括して最新にするワンライナーです。

sudo docker images | cut -d ' ' -f1 | tail -n +2 | sort | uniq | egrep -v '^(<none>|ubuntu)$' | xargs -P0 -L1 sudo docker pull

どのようにしたらイメージが最新になるか?

Dockerのコンテナイメージを最新にするには、イメージ名を指定してdocker pullします。

docker pull イメージ名

Docker 1.6では、引数に1つのイメージのみ指定可能であるため、全てのイメージをアップデートしようとしたら、docker pull イメージ名を繰り返し実行します。イメージが多くなると、手動でやるのは大変なので、上記のワンライナーではxargsで一括してdocker pullできるようにしています。

各コマンドの説明

  • sudo docker images: Dockerのイメージ一覧を取得するコマンドです。イメージ名だけでなくタグ名など他の情報も出ます。
出力例
$ sudo docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
mysql                                 5.7                 804442d17d6a        8 days ago          321.7 MB
mysql                                 5.7.7-rc            804442d17d6a        8 days ago          321.7 MB
mysql                                 5.7.7               804442d17d6a        8 days ago          321.7 MB
mysql                                 5.6                 56f320bd6adc        8 days ago          282.9 MB
...
  • cut -d' ' -f1: 1列目だけを抜き出すコマンドです。-dはデリミタにスペースを指定、-fでは1列目を指定しています。
出力例
$ sudo docker images | cut -d' ' -f1
REPOSITORY
mysql
mysql
mysql
mysql
mysql
mysql
mysql
mysql
mysql
  • tail -n +2: 2行目以降に絞り込みます。つまり1行目(ヘッダ行)を取り除きます。
  • sort: イメージ名をアルファベット順にソートします。
  • uniq: イメージ名で重複している行を取り除きます。
  • egrep -v '^(<none>|ubuntu)$': アップデート対象外にするイメージ名を指定しています。
  • xargs -P0 -L1 sudo docker pull: 各イメージをdocker pullするコマンドです。-P0は並列してコマンドを実行するオプションです。-Pの数値は並列数です。-P4のように明示的に4並列などと指定することもできます。-P0にしておくとxargsがリソースに応じて並列数を決めてくれます。-L1は1行おきにコマンドを実行するオプションです。
suin
Qiita 4位/TypeScript入門書執筆中/TypeScripterのための座談会「YYTypeScript」主催/『実践ドメイン駆動設計』書籍邦訳レビュア/分報Slack考案/YYPHP主催/CodeIQマガジン執筆/株式会社クラフトマンソフトウェア創設/Web自動テスト「ShouldBee」の開発/TypeScript/DDD/OOP
https://yyts.connpass.com/
shouldbee
開発者向けテスト支援サービスShouldBeeを開発・運営するスタートアップ(onlab第8期)
http://shouldbee.at
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした