Post

Docker

Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers. The service has both free and premium tiers. The software that hosts the containers is called Docker Engine.

Project Homepage: Home - Docker Documentation: Docker Documentation | Docker Documentation


Installation

One-click installation script:

1
2
curl https://get.docker.com | sh \
  && sudo systemctl --now enable docker

Run docker as non-root user:

1
2
sudo groupadd docker
sudo usermod -aG docker $USER

Install Docker Engine: Docker Engine


Build Images


Docker CLI

Run Containers

COMMANDDESCRIPTION
docker run IMAGEStart a new container
docker run --name CONTAINER IMAGEStart a new container and set a name
docker run -p HOSTPORT:CONTAINERPORT IMAGEStart a new container with mapped ports
docker run -P IMAGEStart a new container and map all ports

Container Management:

COMMANDDESCRIPTION
docker create IMAGECreate a new container
docker start CONTAINERStart a container
docker stop CONTAINERGraceful stop a container
docker kill CONTAINERKill (SIGKILL) a container
docker restart CONTAINERGraceful stop and restart a container
docker pause CONTAINERSuspend a container
docker unpause CONTAINERResume a container
docker rm CONTAINERDestroy a container

Container Bulk Management

COMMANDDESCRIPTION
docker stop $(docker ps -q)To stop all the running containers
docker stop $(docker ps -a -q)To stop all the stopped and running containers
docker kill $(docker ps -q)To kill all the running containers
docker kill $(docker ps -a -q)To kill all the stopped and running containers
docker restart $(docker ps -q)To restart all running containers
docker restart $(docker ps -a -q)To restart all the stopped and running containers
docker rm $(docker ps -q)To destroy all running containers
docker rm $(docker ps -a -q)To destroy all the stopped and running containers
docker pause $(docker ps -q)To pause all running containers
docker pause $(docker ps -a -q)To pause all the stopped and running containers
docker start $(docker ps -q)To start all running containers
docker start $(docker ps -a -q)To start all the stopped and running containers
docker rm -vf $(docker ps -a -q)To delete all containers including its volumes use
docker rmi -f $(docker images -a -q)To delete all the images
docker system pruneTo delete all dangling and unused images, containers, cache and volumes
docker system prune -aTo delete all used and unused images
docker system prune --volumesTo delete all docker volumes

Inspect Containers:

COMMANDDESCRIPTION
docker psList running containers
docker ps -aList all containers, including stopped
docker logs CONTAINERShow a container output
docker logs -f CONTAINERFollow a container output
docker top CONTAINERList the processes running in a container
docker diffShow the differences with the image (modified files)
docker inspectShow information of a container (json formatted)

Run Commands:

COMMANDDESCRIPTION
docker attach CONTAINERAttach to a container
docker cp CONTAINER:PATH HOSTPATHCopy files from the container
docker cp HOSTPATH CONTAINER:PATHCopy files into the container
docker export CONTAINERExport the content of the container (tar archive)
docker exec CONTAINERRun a command inside a container
docker exec -it CONTAINER /bin/shellOpen an interactive shell inside a container (there is no bash in some images, use /bin/sh)
docker wait CONTAINERWait until the container terminates and return the exit code

Images:

COMMANDDESCRIPTION
docker imagesList all local images
docker history IMAGEShow the image history
docker inspect IMAGEShow information (json formatted)
docker tag IMAGE TAGTag an image
docker commit CONTAINER IMAGECreate an image (from a container)
docker import URLCreate an image (from a tarball)
docker rmi IMAGEDelete images
docker pull REPO:[TAG]pull an image/repo from a registry
docker push REPO:[TAG]push and image/repo to a registry
docker search TEXTSearch an image on the official registry
docker loginLogin to a registry
docker logoutLogout from a registry
docker save REPO:[TAG]Export an image/repo as a tarball
docker loadLoad images from a tarball

Volumes:

COMMANDDESCRIPTION
docker volume lsList all vol1umes
docker volume create VOLUMECreate a volume
docker volume inspect VOLUMEShow information (json formatted)
docker volume rm VOLUMEDestroy a volume
docker volume ls --filter="dangling=true"List all dangling volumes (not referenced by any container)
docker volume pruneDelete all volumes (not referenced by any container)

Backup a container

Backup docker data from inside container volumes and package it in a tarball archive.

1
docker run --rm --volumes-from CONTAINER -v $(pwd):/backup busybox tar cvfz /backup/backup.tar CONTAINERPATH

An automated backup can be done also by this Ansible playbook. The output is also a (compressed) tar. The playbook can also manage the backup retention. So older backups will get deleted automatically.

To also create and backup the container configuration itself, you can use docker-replayfor that. If you lose the entire container, you can recreate it with the export from docker-replay. A more detailed tutorial on how to use docker-replay can be found here.

Restore container from backup

Restore the volume with a tarball archive.

1
docker run --rm --volumes-from CONTAINER -v $(pwd):/backup busybox sh -c "cd CONTAINERPATH && tar xvf /backup/backup.tar --strip 1"
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.