container-debugging

安装量: 147
排名: #5865

安装

npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill container-debugging

Container Debugging Overview

Container debugging focuses on issues within Docker/Kubernetes environments including resource constraints, networking, and application runtime problems.

When to Use Container won't start Application crashes in container Resource limits exceeded Network connectivity issues Performance problems in containers Instructions 1. Docker Debugging Basics

Check container status

docker ps -a docker inspect docker stats

View container logs

docker logs docker logs --follow # Real-time docker logs --tail 100 # Last 100 lines

Connect to running container

docker exec -it /bin/bash docker exec -it sh

Inspect container details

docker inspect | grep -A 5 "State" docker inspect | grep -E "Memory|Cpu"

Check container processes

docker top

View resource usage

docker stats

Shows: CPU%, Memory usage, Network I/O

Copy files from container

docker cp :/path/to/file /local/path

View image layers

docker history docker inspect

  1. Common Container Issues Issue: Container Won't Start

Diagnosis: 1. docker logs 2. Check exit code: docker inspect (ExitCode) 3. Verify image exists: docker images 4. Check entrypoint: docker inspect --format='{{.Config.Entrypoint}}'

Common Exit Codes: 0: Normal exit 1: General application error 127: Command not found 128+N: Terminated by signal N 137: Out of memory (SIGKILL) 139: Segmentation fault

Solutions: - Fix application error - Ensure required files exist - Check executable permissions - Verify working directory


Issue: Out of Memory

Symptoms: Exit code 137 (SIGKILL)

Debug: docker stats # Check Memory usage vs limit

Solution: docker run -m 512m # Increase memory limit docker inspect (MemoryLimit) # Check current limit


Issue: Port Already in Use

Error: "bind: address already in use"

Debug: docker ps # Check running containers netstat -tlnp | grep 8080 # Check port usage

Solution: docker run -p 8081:8080 # Use different host port


Issue: Network Issues

Symptom: Cannot reach other containers

Debug: docker network ls docker inspect | grep IPAddress docker exec ping

Solution: docker network create app-network docker run --network app-network

  1. Container Optimization Resource Limits:

Set in docker-compose: version: '3' services: app: image: myapp environment: - NODE_ENV=production resources: limits: cpus: '1.0' memory: 512M reservations: cpus: '0.5' memory: 256M

Limits: Maximum resources Reservations: Guaranteed resources


Multi-Stage Builds:

FROM node:16 AS builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build

FROM node:16-alpine WORKDIR /app COPY --from=builder /app/dist ./dist COPY package*.json ./ RUN npm install --production EXPOSE 3000 CMD ["node", "dist/index.js"]

Result: 1GB → 200MB image size

  1. Debugging Checklist Container Issues:

[ ] Container starts without error [ ] Ports mapped correctly [ ] Logs show no errors [ ] Environment variables set [ ] Volumes mounted correctly [ ] Network connectivity works [ ] Resource limits appropriate [ ] Permissions correct [ ] Dependencies installed [ ] Entrypoint working

Kubernetes Issues:

[ ] Pod running (not Pending/CrashLoop) [ ] All containers started [ ] Readiness probes passing [ ] Liveness probes passing [ ] Resource requests/limits set [ ] Network policies allow traffic [ ] Secrets/ConfigMaps available [ ] Logs show no errors

Tools:

docker: - logs - stats - inspect - exec

docker-compose: - logs - ps - config

kubectl (Kubernetes): - logs - describe pod - get events - port-forward

Key Points Check logs first: docker logs Understand exit codes (137=OOM, 127=not found) Use resource limits appropriately Network containers on same network Multi-stage builds reduce image size Monitor resource usage with stats Port mappings: host:container Exec into running containers for debugging Update base images regularly Include health checks in containers

返回排行榜