Skip to content

Docker ​

For Debian: https://docs.docker.com/engine/install/debian/

Installation ​

Requirements

sh
sudo apt update
sudo apt install -y ca-certificates curl gnupg

Add repository

sh
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sh
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Install docker dependencies

sh
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Enable and start docker

sh
sudo systemctl enable docker
sudo systemctl start docker

Check if docker is running

sh
sudo systemctl status docker

Cheatsheet ​

Docker ​

  • docker ps: list containers
  • docker ps -a: list all containers
  • docker --version: show version
  • docker images: list images
  • docker rm [ID]: remove container
  • docker rmi [ID]: remove image
  • docker run -it [IMAGE]: run image
  • docker run -it --rm [IMAGE]: run image and remove it after exit
  • docker run -it --rm -v [HOST_PATH]:[CONTAINER_PATH] [IMAGE]: run image and mount volume
  • docker run -it --rm -v [HOST_PATH]:[CONTAINER_PATH] -p [HOST_PORT]:[CONTAINER_PORT] [IMAGE]: run image and mount volume and expose port

Docker Compose ​

  • docker-compose up: start containers
  • docker-compose up -d: start containers in background
  • docker-compose down: stop containers
  • docker-compose down -v: stop containers and remove volumes
  • docker-compose logs: show logs
  • docker-compose logs -f: show logs in real time
  • docker-compose exec [SERVICE] [COMMAND]: execute command in service
  • docker-compose exec [SERVICE] sh: execute shell in service
  • docker-compose exec [SERVICE] bash: execute bash in service
  • docker-compose exec [SERVICE] mysql -u [USER] -p: execute mysql in service

Options ​

Allow non-root user to run docker ​

sh
sudo gpasswd -a $USER docker
newgrp docker
sh
sudo groupadd docker
sudo usermod -aG docker $USER
sh
sudo synogroup --add docker
sudo chown root:docker /var/run/docker.sock
sudo synogroup --member docker $USER

After this, you may need to log out and back in, or even restart your machine before the permissions take effect.

Login to Docker Hub ​

sh
sudo docker login

Shortcuts ​

You can create shortcuts for docker commands by adding aliases to your ~/.zshrc or ~/.bashrc.

sh
vim ~/.zshrc
bash
alias d-clean='docker image prune -f -a && docker volume prune -f -a'
alias d-clean-network='docker network prune -f'
alias d-clean-container='docker container prune -f -a'
alias d-ps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Names}}"'
alias d-stats='docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"'
alias dc='docker compose'
~/.zshrc

MIT License