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.
In order to transfer a Docker image from one server to another, what you need to do is first export the image to a file, then copy that file over from your current server to the new one using scp or rsync and finally load the image to your new server.
To export your image to a tar file, run the docker save command, specifying a name for the . tar file, and the docker image name. This will save the docker image locally.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With