Skip to main content

Docker Image Create and Import

·2 mins

Export Images #

docker save $(docker images -q)  | gzip -c > dockerimages.tar.gz
docker images | sed '1d' | awk '{print $1 " " $2 " " $3}' > dockerimages.list

=====

if we only want some images, we can create the tar first, then run the gzip command. The best way to get this subset of images is to use the filter flag with docker images. The important thing is to include the same filter with both commands.

docker save $(docker images --filter=reference='cecep_*:*latest' -q)  | gzip -c > dockerimages.tar.gz
docker images --filter=reference='cecep_*:*latest' | sed '1d' | awk '{print $1 " " $2 " " $3}' > dockerimages.list

if you would like to combine multiple filters, special care must be take to create an array of those filters

filter_array=(
    --filter=reference='portainer/portainer'
    --filter=reference='python:slim-stretch'
    --filter=reference='rabbitmq:management-alpine'
    --filter=reference='phpmyadmin/phpmyadmin'
    --filter=reference='jwilder/nginx-proxy'
    --filter=reference='httpd:alpine'
    --filter=reference='php:rc-apache'
    --filter=reference='swaggerapi/swagger-ui'
    --filter=reference='tutum/mysql'
    --filter=reference='tutum/mongodb'
    --filter=reference='registry:2' 
    --filter=reference='redis:alpine'
    --filter=reference='ubuntu:xenial'
    --filter=reference='cecep_*'
    --filter=reference='udri_jupyterlab:alpine-clingo'
)
docker save $(for i in "$filter_array[@]"; do docker images $i -q; done)  | gzip -c > dockerimages.tar.gz
for i in "$filter_array[@]"     
do
    docker images $i | sed '1d' | awk '{print $1 " " $2 " " $3}' >> dockerimages.list
done

=====

Load images and tag them #

docker load -i dockerimages.tar
while read REPOSITORY TAG IMAGE_ID
do
    echo "== Tagging $REPOSITORY $TAG $IMAGE_ID =="
    docker tag "$IMAGE_ID" "$REPOSITORY:$TAG"
done < dockerimages.list

=====

Push all images to local registry #

while read REPOSITORY TAG IMAGE_ID
do
    echo "== Pushing $REPOSITORY $TAG $IMAGE_ID =="
    docker push "$REPOSITORY:$TAG"
done < dockerimages.list