Docker🔗
Installation🔗
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
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
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
# managing docker as non root user
$USER=smk
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker # refresh group
# test docker run hello-world
# NOTE : fix .docker dir due to previous root runs if you get config errors
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R
Essential Commands🔗
Category | Command | Description |
---|---|---|
Containers | docker run -d -p 80:80 ngnix |
Run Container in background |
docker stop <container> |
Stop container | |
docker logs -f <container> |
Follow logs | |
Images | docker build -t myapp:latest . |
Build from Dockerfile |
docker pull ubuntu:22.04 |
Download image | |
docker image prune |
Remove unused images | |
System | docker ps -a |
List all containers |
docker system df |
Show disk usage | |
docker exec -it <id> bash |
Enter running container |
Docker Compose Setup🔗
Sample docker-compose.yml
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: example
Run with:
Cleanup🔗
Debugging🔗
Security🔗
Security Best Practices🔗
- Avoid using
--privileged
flag - Use non-root users in containers
- Limit Resources