You are helping the user check if Docker is configured and set it up if needed.
Checks if Docker is installed and properly configured, installing it if needed. Verifies permissions, sets up the Docker service, and ensures your system is ready to run containers.
/plugin marketplace add danielrosehill/linux-desktop-plugin/plugin install lan-manager@danielrosehillYou are helping the user check if Docker is configured and set it up if needed.
Check if Docker is already installed:
docker --versiondocker-compose --version or docker compose versionsystemctl status dockerIf Docker is installed, verify configuration:
docker infodocker psIf Docker is NOT installed, proceed with installation:
Remove old versions:
sudo apt-get remove docker docker-engine docker.io containerd runc
Update and install prerequisites:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
Add Docker's official GPG key:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Set up repository:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Install Docker Engine:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Post-installation setup:
Enable Docker service:
sudo systemctl enable docker
sudo systemctl start docker
Add user to docker group:
sudo usermod -aG docker $USER
Then log out and back in, or run: newgrp docker
Verify Docker installation:
docker --version
docker run hello-world
docker ps
docker images
Install Docker Compose (if not included):
Modern Docker includes Compose v2 as a plugin.
Check: docker compose version
If needed, install standalone:
sudo apt-get install docker-compose-plugin
Configure Docker daemon (optional):
Edit /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2",
"dns": ["8.8.8.8", "8.8.4.4"]
}
Then restart: sudo systemctl restart docker
Check Docker storage location:
docker info | grep "Docker Root Dir"
sudo du -sh /var/lib/docker
If storage is on a small partition, consider changing location.
Configure storage location (if needed):
In /etc/docker/daemon.json:
{
"data-root": "/new/path/to/docker"
}
Then:
sudo systemctl stop docker
sudo mv /var/lib/docker /new/path/to/docker
sudo systemctl start docker
Set up Docker networking: Check networks:
docker network ls
Create custom networks if needed:
docker network create my-network
Configure resource limits (optional):
For laptops/desktops, may want to limit resources:
In /etc/docker/daemon.json:
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
}
}
Set up Docker Hub authentication (optional):
docker login
Test Docker functionality: Run various test commands:
docker run hello-world
docker run -it ubuntu bash
docker ps -a
docker images
docker system info
Install useful Docker tools (optional): Ask user if they want:
# ctop
sudo wget -O /usr/local/bin/ctop https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64
sudo chmod +x /usr/local/bin/ctop
Configure Docker logging: Check current logging:
docker info | grep "Logging Driver"
Configure in /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "5",
"labels": "production"
}
}
Set up Docker cleanup: Suggest adding to crontab:
# Clean up unused containers, images, networks weekly
0 3 * * 0 docker system prune -af --volumes
Or show manual cleanup:
docker system prune -a
docker volume prune
docker network prune
Check for common issues:
sudo systemctl start dockersudo usermod -aG docker $USER and re-logindocker system df and cleanupProvide best practices:
docker system prunedocker system dflatestdocker scan <image>Show basic Docker commands:
docker run <image> - Run a containerdocker ps - List running containersdocker ps -a - List all containersdocker images - List imagesdocker pull <image> - Pull an imagedocker build -t <name> . - Build an imagedocker exec -it <container> bash - Enter containerdocker logs <container> - View logsdocker stop <container> - Stop containerdocker rm <container> - Remove containerdocker rmi <image> - Remove imagedocker compose up - Start compose stackdocker system prune - Clean upReport findings: Summarize:
docker compose not docker-compose)