File size: 7,000 Bytes
292d92c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 |
# Check and Setup Docker
You are helping the user check if Docker is configured and set it up if needed.
## Your tasks:
1. **Check if Docker is already installed:**
- Check Docker: `docker --version`
- Check Docker Compose: `docker-compose --version` or `docker compose version`
- Check Docker service: `systemctl status docker`
2. **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
3. **If Docker is NOT installed, proceed with installation:**
**Remove old versions:**
```bash
sudo apt-get remove docker docker-engine docker.io containerd runc
```
**Update and install prerequisites:**
```bash
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
```
**Add Docker's official GPG key:**
```bash
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:**
```bash
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:**
```bash
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
4. **Post-installation setup:**
**Enable Docker service:**
```bash
sudo systemctl enable docker
sudo systemctl start docker
```
**Add user to docker group:**
```bash
sudo usermod -aG docker $USER
```
Then log out and back in, or run: `newgrp docker`
5. **Verify Docker installation:**
```bash
docker --version
docker run hello-world
docker ps
docker images
```
6. **Install Docker Compose (if not included):**
Modern Docker includes Compose v2 as a plugin.
Check: `docker compose version`
If needed, install standalone:
```bash
sudo apt-get install docker-compose-plugin
```
7. **Configure Docker daemon (optional):**
Edit `/etc/docker/daemon.json`:
```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`
8. **Check Docker storage location:**
```bash
docker info | grep "Docker Root Dir"
sudo du -sh /var/lib/docker
```
If storage is on a small partition, consider changing location.
9. **Configure storage location (if needed):**
In `/etc/docker/daemon.json`:
```json
{
"data-root": "/new/path/to/docker"
}
```
Then:
```bash
sudo systemctl stop docker
sudo mv /var/lib/docker /new/path/to/docker
sudo systemctl start docker
```
10. **Set up Docker networking:**
Check networks:
```bash
docker network ls
```
Create custom networks if needed:
```bash
docker network create my-network
```
11. **Configure resource limits (optional):**
For laptops/desktops, may want to limit resources:
In `/etc/docker/daemon.json`:
```json
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
}
}
```
12. **Set up Docker Hub authentication (optional):**
```bash
docker login
```
13. **Test Docker functionality:**
Run various test commands:
```bash
docker run hello-world
docker run -it ubuntu bash
docker ps -a
docker images
docker system info
```
14. **Install useful Docker tools (optional):**
Ask user if they want:
- **Portainer** (Docker management UI)
- **ctop** (Container monitoring)
- **lazydocker** (Terminal UI for Docker)
```bash
# 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
```
15. **Configure Docker logging:**
Check current logging:
```bash
docker info | grep "Logging Driver"
```
Configure in `/etc/docker/daemon.json`:
```json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "5",
"labels": "production"
}
}
```
16. **Set up Docker cleanup:**
Suggest adding to crontab:
```bash
# Clean up unused containers, images, networks weekly
0 3 * * 0 docker system prune -af --volumes
```
Or show manual cleanup:
```bash
docker system prune -a
docker volume prune
docker network prune
```
17. **Check for common issues:**
- Docker daemon not running: `sudo systemctl start docker`
- Permission denied: `sudo usermod -aG docker $USER` and re-login
- Storage full: `docker system df` and cleanup
- Network issues: Check DNS in daemon.json
- Firewall blocking: Check ufw/iptables
18. **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
19. **Show basic Docker commands:**
- `docker run <image>` - Run a container
- `docker ps` - List running containers
- `docker ps -a` - List all containers
- `docker images` - List images
- `docker pull <image>` - Pull an image
- `docker build -t <name> .` - Build an image
- `docker exec -it <container> bash` - Enter container
- `docker logs <container>` - View logs
- `docker stop <container>` - Stop container
- `docker rm <container>` - Remove container
- `docker rmi <image>` - Remove image
- `docker compose up` - Start compose stack
- `docker system prune` - Clean up
20. **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 compose` not `docker-compose`)
- Keep Docker updated for security patches
|