Docker
Install
Debian
https://docs.docker.com/engine/install/debian/
sudo -i
apt remove docker docker-engine docker.io containerd runc
apt install curl apt-transport-https ca-certificates curl gnupg-agent software-properties-common
echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"> /etc/apt/sources.list.d/docker.list
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo tee /etc/apt/trusted.gpg.d/docker.asc
apt update
apt install docker-ce
Manage Docker as a non-root user
https://docs.docker.com/engine/installation/linux/linux-postinstall/
sudo usermod -aG docker $USER
newgrp docker
Usage
Show general informations:
docker info
Run containers
Start container in foreground:
docker run hello-world
docker run -p 3128:8000 varac/squid_deb_proxy
Run shell:
docker run -i -t --entrypoint /bin/bash varac/soledad
Start a container and start bash:
docker run -i -t useragent:latest /bin/bash
Run cmd in existing container:
docker exec -it squid_deb_proxy /bin/bash
Kill container:
docker kill couchdb
Start existing container:
docker start couchdb
Prune / cleanup
docker container prune
Prune all old containers, images, volumes etc:
docker system prune
docker system prune --force
Remove ll shutdown containers:
docker rm `docker ps --no-trunc -aq`
Remove all containers including running ones:
docker rm -f `docker ps --no-trunc -aq`
Remove all images:
docker rmi $(docker images -q)
docker rmi $(docker images -q) --force
Remove image based on certain image:
docker rm $(docker ps -a | awk '/myimage:mytag/{print $1}')
Inspect containers / images
List files in container:
docker export 4ec52b6023d2 | tar -tf -
Show history of image build:
docker image history --no-trunc traefik:1.7.9 > /tmp/image_history
Show size of container:
docker ps --size
docker output formatting
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Size}}\t{{.Names}}" \
| cut -c-$(tput cols)
Or put the size at front:
docker ps --format "table {{.Size}}\t{{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Names}}" \
| cut -c-$(tput cols)
Disk usage
Given this cluster disk usage:
/dev/xvda1 30G 26G 4.1G 87% /
But du only schows 18G usage:
root@master:~# du -sch /
18G /
18G total
The problem is that some deleted files from the overlay filesystem are not
completly freed, as shown with lsof:
root@master:~# lsof -l | grep '(deleted)' | head
dockerd 8768 root 29w REG 202,1 16151995496 21692420
/var/lib/docker/containers/…eb3b5cc697f23-json.log
(deleted)
dockerd 8768 3759 dockerd root 29w REG 202,1 16151995496 21692420
/var/lib/docker/containers/…eb3b5cc697f23-json.log
(deleted)
dockerd 8768 3761 dockerd root 29w REG
Those files were deleted from the container host from /var/lib/….
For a real disk usage investigation you either need to restart docker containers which hold up removed files or reboot the system.