The way of updating images is assuming you keep images based on a TAG
Before updating images make sure there are no images without a TAG, delete any that is not making use of one, see Removing old images down below.
images=$( docker images --format '{{ $image:=split .Repository "/" }}{{ index $image 1 }}:{{.Tag}}' )
for image in ${images}; do
docker pull ${image}
done
The way of deleting images is assuming you keep images based on a TAG
After an update the TAGs will point to a different IMAGE_ID leaving old images in place, e.g.
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/debian 8 8cedef9d7368 12 days ago 123.4 MB
docker.io/mariadb 10.0 e2fa1cc27ede 3 weeks ago 337.2 MB
docker.io/percona 5.6 0fd9de2714bf 4 weeks ago 323.1 MB
docker.io/percona 5.5 ab5ee4f7a1bd 4 weeks ago 296.5 MB
docker.io/percona latest 8b1f9f91ec47 4 weeks ago 352.2 MB
docker.io/mysql 5.6 673eeb95a1a4 4 weeks ago 327.5 MB
docker.io/mysql 5.5 0697aa95507c 4 weeks ago 255 MB
docker.io/mysql 5.7 22be5748ecbe 4 weeks ago 405.6 MB
docker.io/mysql latest 22be5748ecbe 4 weeks ago 405.6 MB
docker.io/mariadb 5 348946d94fd9 4 weeks ago 280.3 MB
docker.io/mariadb 10.1 56741a13bbb9 4 weeks ago 393.4 MB
docker.io/debian stretch 6f4d77d39d73 4 weeks ago 99.95 MB
docker.io/debian sid 88af6b1f3566 4 weeks ago 100.2 MB
docker.io/debian jessie 978d85d02b87 4 weeks ago 123 MB
docker.io/ubuntu 16.04 0ef2e08ed3fa 4 weeks ago 130 MB
docker.io/ubuntu xenial 0ef2e08ed3fa 4 weeks ago 130 MB
docker.io/ubuntu 14.04 7c09e61e9035 4 weeks ago 187.9 MB
docker.io/ubuntu trusty 7c09e61e9035 4 weeks ago 187.9 MB
docker.io/rhel latest 407bdd6b5495 5 weeks ago 192.5 MB
docker.io/mysql <none> 7666f75adb6b 9 weeks ago 405.6 MB
docker.io/ubuntu <none> f49eec89601e 10 weeks ago 129.5 MB
docker.io/ubuntu <none> b969ab9f929b 10 weeks ago 187.9 MB
docker.io/percona <none> 385f4a11b9ab 10 weeks ago 322.4 MB
docker.io/percona <none> ba28a0650765 10 weeks ago 296.4 MB
docker.io/percona <none> 78507dce6c68 10 weeks ago 337.6 MB
docker.io/mysql <none> a896fd82dcd5 10 weeks ago 327.5 MB
docker.io/mysql <none> 98ae577069d3 10 weeks ago 254.9 MB
docker.io/mariadb <none> c1d0f317c38b 10 weeks ago 280.3 MB
docker.io/mariadb <none> 076aaeda7e9d 10 weeks ago 337.1 MB
docker.io/debian <none> 988c9d0c7c4b 10 weeks ago 99.33 MB
docker.io/debian <none> e086d99b83a9 10 weeks ago 99.5 MB
docker.io/debian <none> e5599115b6a6 10 weeks ago 123 MB
docker.io/centos 7 67591570dd29 3 months ago 191.8 MB
docker.io/centos latest 67591570dd29 3 months ago 191.8 MB
docker.io/centos 6 8315978ceaaa 5 months ago 194.6 MB
Get rid of those after an update:
old_images=$( docker images | awk '/<none>/ {print $3}' )
for old_image in ${old_images}; do
docker rmi ${old_image}
done
This is how it will look like after cleaning
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/percona 5.6 98ffb573d65e 3 days ago 324.4 MB
docker.io/percona latest 283ef2185b79 3 days ago 353.5 MB
docker.io/mysql 5.5 9913483658d3 3 days ago 256 MB
docker.io/mysql 5.6 a0f5d7301767 3 days ago 328.5 MB
docker.io/mysql 5.7 9546ca122d3a 3 days ago 406.9 MB
docker.io/mysql latest 9546ca122d3a 3 days ago 406.9 MB
docker.io/percona 5.5 7cfeb2290d5f 11 days ago 297.8 MB
docker.io/mariadb 5 ff311e07a7b5 12 days ago 280.3 MB
docker.io/mariadb 10.0 9949993fb720 12 days ago 338.5 MB
docker.io/mariadb 10.1 a179773563c9 12 days ago 394.9 MB
docker.io/debian stretch 51f0da81de8a 12 days ago 99.97 MB
docker.io/debian sid 58f44b590ddc 12 days ago 100.2 MB
docker.io/debian 8 8cedef9d7368 12 days ago 123.4 MB
docker.io/debian jessie 8cedef9d7368 12 days ago 123.4 MB
docker.io/centos 6 ae5cb7280ec3 2 weeks ago 194.6 MB
docker.io/centos 7 98d35105a391 2 weeks ago 192.5 MB
docker.io/centos latest 98d35105a391 2 weeks ago 192.5 MB
docker.io/ubuntu 16.04 0ef2e08ed3fa 4 weeks ago 130 MB
docker.io/ubuntu xenial 0ef2e08ed3fa 4 weeks ago 130 MB
docker.io/ubuntu 14.04 7c09e61e9035 4 weeks ago 187.9 MB
docker.io/ubuntu trusty 7c09e61e9035 4 weeks ago 187.9 MB
docker.io/rhel latest 407bdd6b5495 5 weeks ago 192.5 MB
docker.io/centos 5 1ae98b2c895d 7 months ago 284.7 MB