How to save all Docker images and copy to another machine

docker

Solution

If you want to export all images at once, create one big tar file:

docker save $(docker images -q) -o /path/to/save/mydockersimages.tar

If you want to save multiples images in one `.tar` file:

IDS=$(docker images | awk '{if ($1 ~ /^(debian|centos)/) print $3}')
docker save $IDS -o /path/to/save/somedockersimages.tar

Finally, if you want to export multiple many images, with one `.tar` file per images (not disk efficient: common layer are saved in each `.tar` file):

docker images | awk '{if ($1 ~ /^(openshift|centos)/) print $1 " " $2 " " $3 }' | tr -c "a-z A-Z0-9_.\n-" "%" | while read REPOSITORY TAG IMAGE_ID
do
  echo "== Saving $REPOSITORY $TAG $IMAGE_ID =="
  docker  save   -o /path/to/save/$REPOSITORY-$TAG-$IMAGE_ID.tar $IMAGE_ID
done

You may also want to save the list of images so that the restored images can be tagged:

docker images | sed '1d' | awk '{print $1 " " $2 " " $3}' > mydockersimages.list

On the remote machine, you can `load` (import) the images:

docker load -i /path/to/save/mydockersimages.tar

and tag the imported images:

while read REPOSITORY TAG IMAGE_ID
do
        echo "== Tagging $REPOSITORY $TAG $IMAGE_ID =="
        docker tag "$IMAGE_ID" "$REPOSITORY:$TAG"
done < mydockersimages.list

For more information about save/load, read: How to copy Docker images from one host to another without using a repository

Problem

I have the below list of images present on my system and want to copy all these images to a remote machine. ``` REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE u14_py269 latest 6a1ec0b508b3 4 days ago 885.9 MB u12_py273 latest c2a804894851 4 days ago 686 MB u12_core latest 0d61eba80df2 4 days ago 629.1 MB c6_py266 latest cb1a94742d59 4 days ago 1.32 GB c6_core latest 77c2ed19d87f 4 days ago 1.278 GB c7_py275 latest bb1d3de68452 4 days ago 1.117 GB c7_core latest ca14a76e9cca 4 days ago 1.081 GB u14_py35 latest d110c7e4a1f5 5 days ago 914.5 MB u14_py34 latest 085a37cb8614 5 days ago 830.7 MB u14_py276 latest 8927c6167930 5 days ago 834.1 MB u14_core latest 93ead5abc25b 5 days ago 776.9 MB centos centos6 36877b5acebb 5 days ago 228.9 MB ubuntu latest 36248ae4a9ac 5 days ago 188 MB ubuntu 12.04 94a7cb19a65b 5 days ago 137.8 MB edgester/gerrit latest ce4e3238052a 6 days ago 735.2 MB u14_as374_py276 latest fa5fb7189d70 11 days ago 1.497 GB c721_as373_py275 latest 03ccf6961d0c 11 days ago 844.3 MB c721_as373_py35 latest b5fece3dd45b 11 days ago 1.127 GB c171_con_core latest 8af0d24a38a0 2 weeks ago 377.2 MB u14_as374_php55 latest 29df638e363a 3 weeks ago 1.073 GB j_u14_as374_php55 latest 29df638e363a 3 weeks ago 1.073 GB centos centos7 c8a648134623 8 weeks ago 196.6 MB centos latest c8a648134623 8 weeks ago 196.6 MB j_u14_as374_py276 latest 28f379d60882 10 weeks ago 871.5 MB ubuntu 14.04 89d5d8e8bafb 10 weeks ago 187.9 MB ``` Currently I am using method suggested in save and load Docker images, but I believe there must be a better way to deal with all images.

Original source

Related problems