Images are just templates for docker containers.
Lifecycle
docker images
shows all images.docker import
creates an image from a tarball.docker build
creates image from Dockerfile.docker commit
creates image from a container, pausing it temporarily if it is running.docker rmi
removes an image.docker load
loads an image from a tar archive as STDIN, including images and tags (as of 0.7).docker save
saves an image to a tar archive stream to STDOUT with all parent layers, tags & versions (as of 0.7).
Info
docker history
shows history of image.docker tag
tags an image to a name (local or registry).
Cleaning up
While you can use the docker rmi
command to remove specific images, there's a tool called docker-gc that will safely clean up images that are no longer used by any containers. As of docker 1.13, docker image prune
is also available for removing unused images. See Prune.
Load/Save image
Load an image from file:docker load < my_image.tar.gz
Save an existing image:docker save my_image:my_tag | gzip > my_image.tar.gz
Import/Export container
Import a container as an image from file:cat my_container.tar.gz | docker import - my_image:my_tag
Export an existing container:docker export my_container | gzip > my_container.tar.gz
Difference between loading a saved image and importing an exported container as an image
Loading an image using the load
command creates a new image including its history.
Importing a container as an image using the import
command creates a new image excluding the history which results in a smaller image size compared to loading an image.