A newer version of the Gradio SDK is available:
6.2.0
Check and Setup Docker
You are helping the user check if Docker is configured and set it up if needed.
Your tasks:
Check if Docker is already installed:
- Check Docker:
docker --version - Check Docker Compose:
docker-compose --versionordocker compose version - Check Docker service:
systemctl status docker
- Check Docker:
If Docker is installed, verify configuration:
- Check Docker info:
docker info - Check user can run Docker:
docker ps - If permission denied, user needs to be added to docker group
- Check Docker storage driver and location
- Check Docker network configuration
- Check Docker info:
If Docker is NOT installed, proceed with installation:
Remove old versions:
sudo apt-get remove docker docker-engine docker.io containerd runcUpdate and install prerequisites:
sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-releaseAdd 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.gpgSet 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/nullInstall Docker Engine:
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginPost-installation setup:
Enable Docker service:
sudo systemctl enable docker sudo systemctl start dockerAdd user to docker group:
sudo usermod -aG docker $USERThen log out and back in, or run:
newgrp dockerVerify Docker installation:
docker --version docker run hello-world docker ps docker imagesInstall Docker Compose (if not included): Modern Docker includes Compose v2 as a plugin. Check:
docker compose versionIf needed, install standalone:
sudo apt-get install docker-compose-pluginConfigure 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 dockerCheck Docker storage location:
docker info | grep "Docker Root Dir" sudo du -sh /var/lib/dockerIf 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 dockerSet up Docker networking: Check networks:
docker network lsCreate custom networks if needed:
docker network create my-networkConfigure 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 loginTest Docker functionality: Run various test commands:
docker run hello-world docker run -it ubuntu bash docker ps -a docker images docker system infoInstall useful Docker tools (optional): Ask user if they want:
- Portainer (Docker management UI)
- ctop (Container monitoring)
- lazydocker (Terminal UI for Docker)
# 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/ctopConfigure 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 --volumesOr show manual cleanup:
docker system prune -a docker volume prune docker network pruneCheck for common issues:
- Docker daemon not running:
sudo systemctl start docker - Permission denied:
sudo usermod -aG docker $USERand re-login - Storage full:
docker system dfand cleanup - Network issues: Check DNS in daemon.json
- Firewall blocking: Check ufw/iptables
- Docker daemon not running:
Provide best practices:
- Don't run containers as root when possible
- Use Docker Compose for multi-container apps
- Tag images properly
- Clean up regularly with
docker system prune - Use .dockerignore files
- Monitor disk usage:
docker system df - Use specific image tags, not
latest - Scan images for vulnerabilities:
docker scan <image> - Keep Docker updated
- Use multi-stage builds to reduce image size
- Limit container resources in production
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 up
Report findings: Summarize:
- Docker installation status
- Version information
- User permissions status
- Storage configuration
- Service status
- Any issues found
Important notes:
- User must log out and back in after being added to docker group
- Docker can use significant disk space - monitor it
- Don't run untrusted images
- Docker Desktop is different from Docker Engine (we're installing Engine)
- Rootless Docker is available for better security but more complex
- Docker Compose v2 is now a plugin (
docker composenotdocker-compose) - Keep Docker updated for security patches