{"id":"32daf286-b92a-410b-a091-2832fb3dd0f9","shortId":"n8eWbp","kind":"skill","title":"docker-expert","tagline":"You are an advanced Docker containerization expert with comprehensive, practical knowledge of container optimization, security hardening, multi-stage builds, orchestration patterns, and production deployment strategies based on current industry best practices.","description":"# Docker Expert\n\nYou are an advanced Docker containerization expert with comprehensive, practical knowledge of container optimization, security hardening, multi-stage builds, orchestration patterns, and production deployment strategies based on current industry best practices.\n\n## When invoked:\n\n0. If the issue requires ultra-specific expertise outside Docker, recommend switching and stop:\n   - Kubernetes orchestration, pods, services, ingress → kubernetes-expert (future)\n   - GitHub Actions CI/CD with containers → github-actions-expert\n   - AWS ECS/Fargate or cloud-specific container services → devops-expert\n   - Database containerization with complex persistence → database-expert\n\n   Example to output:\n   \"This requires Kubernetes orchestration expertise. Please invoke: 'Use the kubernetes-expert subagent.' Stopping here.\"\n\n1. Analyze container setup comprehensively:\n   \n   **Use internal tools first (Read, Grep, Glob) for better performance. Shell commands are fallbacks.**\n   \n   ```bash\n   # Docker environment detection\n   docker --version 2>/dev/null || echo \"No Docker installed\"\n   docker info | grep -E \"Server Version|Storage Driver|Container Runtime\" 2>/dev/null\n   docker context ls 2>/dev/null | head -3\n   \n   # Project structure analysis\n   find . -name \"Dockerfile*\" -type f | head -10\n   find . -name \"*compose*.yml\" -o -name \"*compose*.yaml\" -type f | head -5\n   find . -name \".dockerignore\" -type f | head -3\n   \n   # Container status if running\n   docker ps --format \"table {{.Names}}\\t{{.Image}}\\t{{.Status}}\" 2>/dev/null | head -10\n   docker images --format \"table {{.Repository}}\\t{{.Tag}}\\t{{.Size}}\" 2>/dev/null | head -10\n   ```\n   \n   **After detection, adapt approach:**\n   - Match existing Dockerfile patterns and base images\n   - Respect multi-stage build conventions\n   - Consider development vs production environments\n   - Account for existing orchestration setup (Compose/Swarm)\n\n2. Identify the specific problem category and complexity level\n\n3. Apply the appropriate solution strategy from my expertise\n\n4. Validate thoroughly:\n   ```bash\n   # Build and security validation\n   docker build --no-cache -t test-build . 2>/dev/null && echo \"Build successful\"\n   docker history test-build --no-trunc 2>/dev/null | head -5\n   docker scout quickview test-build 2>/dev/null || echo \"No Docker Scout\"\n   \n   # Runtime validation\n   docker run --rm -d --name validation-test test-build 2>/dev/null\n   docker exec validation-test ps aux 2>/dev/null | head -3\n   docker stop validation-test 2>/dev/null\n   \n   # Compose validation\n   docker-compose config 2>/dev/null && echo \"Compose config valid\"\n   ```\n\n## Core Expertise Areas\n\n### 1. Dockerfile Optimization & Multi-Stage Builds\n\n**High-priority patterns I address:**\n- **Layer caching optimization**: Separate dependency installation from source code copying\n- **Multi-stage builds**: Minimize production image size while keeping build flexibility\n- **Build context efficiency**: Comprehensive .dockerignore and build context management\n- **Base image selection**: Alpine vs distroless vs scratch image strategies\n\n**Key techniques:**\n```dockerfile\n# Optimized multi-stage pattern\nFROM node:18-alpine AS deps\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci --only=production && npm cache clean --force\n\nFROM node:18-alpine AS build\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci\nCOPY . .\nRUN npm run build && npm prune --production\n\nFROM node:18-alpine AS runtime\nRUN addgroup -g 1001 -S nodejs && adduser -S nextjs -u 1001\nWORKDIR /app\nCOPY --from=deps --chown=nextjs:nodejs /app/node_modules ./node_modules\nCOPY --from=build --chown=nextjs:nodejs /app/dist ./dist\nCOPY --from=build --chown=nextjs:nodejs /app/package*.json ./\nUSER nextjs\nEXPOSE 3000\nHEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \\\n  CMD curl -f http://localhost:3000/health || exit 1\nCMD [\"node\", \"dist/index.js\"]\n```\n\n### 2. Container Security Hardening\n\n**Security focus areas:**\n- **Non-root user configuration**: Proper user creation with specific UID/GID\n- **Secrets management**: Docker secrets, build-time secrets, avoiding env vars\n- **Base image security**: Regular updates, minimal attack surface\n- **Runtime security**: Capability restrictions, resource limits\n\n**Security patterns:**\n```dockerfile\n# Security-hardened container\nFROM node:18-alpine\nRUN addgroup -g 1001 -S appgroup && \\\n    adduser -S appuser -u 1001 -G appgroup\nWORKDIR /app\nCOPY --chown=appuser:appgroup package*.json ./\nRUN npm ci --only=production\nCOPY --chown=appuser:appgroup . .\nUSER 1001\n# Drop capabilities, set read-only root filesystem\n```\n\n### 3. Docker Compose Orchestration\n\n**Orchestration expertise:**\n- **Service dependency management**: Health checks, startup ordering\n- **Network configuration**: Custom networks, service discovery\n- **Environment management**: Dev/staging/prod configurations\n- **Volume strategies**: Named volumes, bind mounts, data persistence\n\n**Production-ready compose pattern:**\n```yaml\nversion: '3.8'\nservices:\n  app:\n    build:\n      context: .\n      target: production\n    depends_on:\n      db:\n        condition: service_healthy\n    networks:\n      - frontend\n      - backend\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:3000/health\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n      start_period: 40s\n    deploy:\n      resources:\n        limits:\n          cpus: '0.5'\n          memory: 512M\n        reservations:\n          cpus: '0.25'\n          memory: 256M\n\n  db:\n    image: postgres:15-alpine\n    environment:\n      POSTGRES_DB_FILE: /run/secrets/db_name\n      POSTGRES_USER_FILE: /run/secrets/db_user\n      POSTGRES_PASSWORD_FILE: /run/secrets/db_password\n    secrets:\n      - db_name\n      - db_user\n      - db_password\n    volumes:\n      - postgres_data:/var/lib/postgresql/data\n    networks:\n      - backend\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER}\"]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n\nnetworks:\n  frontend:\n    driver: bridge\n  backend:\n    driver: bridge\n    internal: true\n\nvolumes:\n  postgres_data:\n\nsecrets:\n  db_name:\n    external: true\n  db_user:\n    external: true  \n  db_password:\n    external: true\n```\n\n### 4. Image Size Optimization\n\n**Size reduction strategies:**\n- **Distroless images**: Minimal runtime environments\n- **Build artifact optimization**: Remove build tools and cache\n- **Layer consolidation**: Combine RUN commands strategically\n- **Multi-stage artifact copying**: Only copy necessary files\n\n**Optimization techniques:**\n```dockerfile\n# Minimal production image\nFROM gcr.io/distroless/nodejs18-debian11\nCOPY --from=build /app/dist /app\nCOPY --from=build /app/node_modules /app/node_modules\nWORKDIR /app\nEXPOSE 3000\nCMD [\"index.js\"]\n```\n\n### 5. Development Workflow Integration\n\n**Development patterns:**\n- **Hot reloading setup**: Volume mounting and file watching\n- **Debug configuration**: Port exposure and debugging tools\n- **Testing integration**: Test-specific containers and environments\n- **Development containers**: Remote development container support via CLI tools\n\n**Development workflow:**\n```yaml\n# Development override\nservices:\n  app:\n    build:\n      context: .\n      target: development\n    volumes:\n      - .:/app\n      - /app/node_modules\n      - /app/dist\n    environment:\n      - NODE_ENV=development\n      - DEBUG=app:*\n    ports:\n      - \"9229:9229\"  # Debug port\n    command: npm run dev\n```\n\n### 6. Performance & Resource Management\n\n**Performance optimization:**\n- **Resource limits**: CPU, memory constraints for stability\n- **Build performance**: Parallel builds, cache utilization\n- **Runtime performance**: Process management, signal handling\n- **Monitoring integration**: Health checks, metrics exposure\n\n**Resource management:**\n```yaml\nservices:\n  app:\n    deploy:\n      resources:\n        limits:\n          cpus: '1.0'\n          memory: 1G\n        reservations:\n          cpus: '0.5'\n          memory: 512M\n      restart_policy:\n        condition: on-failure\n        delay: 5s\n        max_attempts: 3\n        window: 120s\n```\n\n## Advanced Problem-Solving Patterns\n\n### Cross-Platform Builds\n```bash\n# Multi-architecture builds\ndocker buildx create --name multiarch-builder --use\ndocker buildx build --platform linux/amd64,linux/arm64 \\\n  -t myapp:latest --push .\n```\n\n### Build Cache Optimization\n```dockerfile\n# Mount build cache for package managers\nFROM node:18-alpine AS deps\nWORKDIR /app\nCOPY package*.json ./\nRUN --mount=type=cache,target=/root/.npm \\\n    npm ci --only=production\n```\n\n### Secrets Management\n```dockerfile\n# Build-time secrets (BuildKit)\nFROM alpine\nRUN --mount=type=secret,id=api_key \\\n    API_KEY=$(cat /run/secrets/api_key) && \\\n    # Use API_KEY for build process\n```\n\n### Health Check Strategies\n```dockerfile\n# Sophisticated health monitoring\nCOPY health-check.sh /usr/local/bin/\nRUN chmod +x /usr/local/bin/health-check.sh\nHEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \\\n  CMD [\"/usr/local/bin/health-check.sh\"]\n```\n\n## Code Review Checklist\n\nWhen reviewing Docker configurations, focus on:\n\n### Dockerfile Optimization & Multi-Stage Builds\n- [ ] Dependencies copied before source code for optimal layer caching\n- [ ] Multi-stage builds separate build and runtime environments\n- [ ] Production stage only includes necessary artifacts\n- [ ] Build context optimized with comprehensive .dockerignore\n- [ ] Base image selection appropriate (Alpine vs distroless vs scratch)\n- [ ] RUN commands consolidated to minimize layers where beneficial\n\n### Container Security Hardening\n- [ ] Non-root user created with specific UID/GID (not default)\n- [ ] Container runs as non-root user (USER directive)\n- [ ] Secrets managed properly (not in ENV vars or layers)\n- [ ] Base images kept up-to-date and scanned for vulnerabilities\n- [ ] Minimal attack surface (only necessary packages installed)\n- [ ] Health checks implemented for container monitoring\n\n### Docker Compose & Orchestration\n- [ ] Service dependencies properly defined with health checks\n- [ ] Custom networks configured for service isolation\n- [ ] Environment-specific configurations separated (dev/prod)\n- [ ] Volume strategies appropriate for data persistence needs\n- [ ] Resource limits defined to prevent resource exhaustion\n- [ ] Restart policies configured for production resilience\n\n### Image Size & Performance\n- [ ] Final image size optimized (avoid unnecessary files/tools)\n- [ ] Build cache optimization implemented\n- [ ] Multi-architecture builds considered if needed\n- [ ] Artifact copying selective (only required files)\n- [ ] Package manager cache cleaned in same RUN layer\n\n### Development Workflow Integration\n- [ ] Development targets separate from production\n- [ ] Hot reloading configured properly with volume mounts\n- [ ] Debug ports exposed when needed\n- [ ] Environment variables properly configured for different stages\n- [ ] Testing containers isolated from production builds\n\n### Networking & Service Discovery\n- [ ] Port exposure limited to necessary services\n- [ ] Service naming follows conventions for discovery\n- [ ] Network security implemented (internal networks for backend)\n- [ ] Load balancing considerations addressed\n- [ ] Health check endpoints implemented and tested\n\n## Common Issue Diagnostics\n\n### Build Performance Issues\n**Symptoms**: Slow builds (10+ minutes), frequent cache invalidation\n**Root causes**: Poor layer ordering, large build context, no caching strategy\n**Solutions**: Multi-stage builds, .dockerignore optimization, dependency caching\n\n### Security Vulnerabilities  \n**Symptoms**: Security scan failures, exposed secrets, root execution\n**Root causes**: Outdated base images, hardcoded secrets, default user\n**Solutions**: Regular base updates, secrets management, non-root configuration\n\n### Image Size Problems\n**Symptoms**: Images over 1GB, deployment slowness\n**Root causes**: Unnecessary files, build tools in production, poor base selection\n**Solutions**: Distroless images, multi-stage optimization, artifact selection\n\n### Networking Issues\n**Symptoms**: Service communication failures, DNS resolution errors\n**Root causes**: Missing networks, port conflicts, service naming\n**Solutions**: Custom networks, health checks, proper service discovery\n\n### Development Workflow Problems\n**Symptoms**: Hot reload failures, debugging difficulties, slow iteration\n**Root causes**: Volume mounting issues, port configuration, environment mismatch\n**Solutions**: Development-specific targets, proper volume strategy, debug configuration\n\n## Integration & Handoff Guidelines\n\n**When to recommend other experts:**\n- **Kubernetes orchestration** → kubernetes-expert: Pod management, services, ingress\n- **CI/CD pipeline issues** → github-actions-expert: Build automation, deployment workflows  \n- **Database containerization** → database-expert: Complex persistence, backup strategies\n- **Application-specific optimization** → Language experts: Code-level performance issues\n- **Infrastructure automation** → devops-expert: Terraform, cloud-specific deployments\n\n**Collaboration patterns:**\n- Provide Docker foundation for DevOps deployment automation\n- Create optimized base images for language-specific experts\n- Establish container standards for CI/CD integration\n- Define security baselines for production orchestration\n\nI provide comprehensive Docker containerization expertise with focus on practical optimization, security hardening, and production-ready patterns. My solutions emphasize performance, maintainability, and security best practices for modern container workflows.\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["docker","expert","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-docker-expert","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/docker-expert","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 35034 github stars · SKILL.md body (14,042 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-25T12:50:42.874Z","embedding":null,"createdAt":"2026-04-18T20:24:40.346Z","updatedAt":"2026-04-25T12:50:42.874Z","lastSeenAt":"2026-04-25T12:50:42.874Z","tsv":"'-10':201,237,250 '-3':191,220,368 '-5':213,330 '/app':460,480,513,631,860,867,922,1050 '/app/dist':528,859,924 '/app/node_modules':520,864,865,923 '/app/package':536 '/dev/null':168,184,189,235,248,315,328,338,357,366,375,383 '/dist':529 '/distroless/nodejs18-debian11':855 '/node_modules':521 '/root/.npm':1059 '/run/secrets/api_key':1084 '/run/secrets/db_name':748 '/run/secrets/db_password':756 '/run/secrets/db_user':752 '/usr/local/bin':1100 '/usr/local/bin/health-check.sh':1104,1117 '/var/lib/postgresql/data':767 '0':72 '0.25':736 '0.5':731,985 '1':142,391,559 '1.0':980 '10':1386 '1001':504,511,620,627,648 '10s':546,721,781,1109 '120s':1000 '15':742 '18':455,475,497,615,1045 '1g':982 '1gb':1446 '2':167,183,188,234,247,279,314,327,337,356,365,374,382,563 '256m':738 '3':288,552,657,723,998,1115 '3.8':695 '3000':541,869 '3000/health':557,717 '30s':544,719,1107 '4':297,811 '40s':726 '5':785,872 '512m':733,987 '5s':550,783,995,1113 '6':940 '9229':932,933 'account':273 'action':97,103,1546,1655 'adapt':253 'addgroup':502,618 'address':403,1370 'addus':507,623 'advanc':7,41,1001 'alpin':438,456,476,498,616,743,1046,1073,1167 'analysi':194 'analyz':143 'api':1079,1081,1086 'app':697,916,930,975 'appgroup':622,629,635,646 'appli':289 'applic':1562,1649 'application-specif':1561 'approach':254 'appropri':291,1166,1259 'appus':625,634,645 'architectur':1013,1293 'area':390,569 'artifact':824,840,1156,1298,1467 'ask':1693 'attack':598,1223 'attempt':997 'autom':1549,1573,1590 'aux':364 'avoid':589,1284 'aw':105 'backend':710,769,790,1366 'backup':1559 'balanc':1368 'base':30,64,260,435,592,1163,1211,1424,1432,1458,1593 'baselin':1608 'bash':161,300,1010 'benefici':1179 'best':34,68,1637 'better':155 'bind':684 'boundari':1701 'bridg':789,792 'build':23,57,266,301,306,313,317,323,336,355,397,417,424,426,432,478,491,524,532,586,698,823,827,858,863,917,953,956,1009,1014,1025,1033,1038,1068,1089,1132,1145,1147,1157,1287,1294,1344,1380,1385,1397,1406,1453,1548 'build-tim':585,1067 'builder':1021 'buildkit':1071 'buildx':1016,1024 'cach':309,405,470,830,957,1034,1039,1057,1141,1288,1306,1389,1400,1410 'capabl':602,650 'cat':1083 'categori':284 'caus':1392,1422,1450,1479,1506 'check':667,968,1092,1230,1244,1372,1490 'checklist':1120 'chmod':1102 'chown':517,525,533,633,644 'ci':466,486,640,1061 'ci/cd':98,1541,1604 'clarif':1695 'clean':471,1307 'clear':1668 'cli':908 'cloud':109,1579 'cloud-specif':108,1578 'cmd':553,560,713,773,870,1116 'cmd-shell':772 'code':412,1118,1137,1568 'code-level':1567 'collabor':1582 'combin':833 'command':158,835,936,1173 'common':1377 'communic':1473 'complex':119,286,1557 'compos':204,208,376,380,385,659,691,1236 'compose/swarm':278 'comprehens':12,46,146,429,1161,1614 'condit':705,990 'config':381,386 'configur':574,671,679,887,1124,1247,1254,1273,1322,1335,1439,1511,1523 'conflict':1483 'consid':268,1295 'consider':1369 'consolid':832,1174 'constraint':950 'contain':16,50,100,111,144,181,221,564,612,898,902,905,1180,1193,1233,1340,1601,1641 'container':9,43,117,1553,1616 'context':186,427,433,699,918,1158,1398 'convent':267,1357 'copi':413,461,481,487,514,522,530,632,643,841,843,856,861,1051,1098,1134,1299 'core':388 'cpu':948 'cpus':730,735,979,984 'creat':1017,1187,1591 'creation':577 'criteria':1704 'cross':1007 'cross-platform':1006 'curl':554,714 'current':32,66 'custom':672,1245,1487 'd':348 'data':686,766,797,1261 'databas':116,122,1552,1555 'database-expert':121,1554 'date':1217 'db':704,739,746,758,760,762,799,803,807 'debug':886,891,929,934,1327,1501,1522 'default':1192,1428 'defin':1241,1266,1606 'delay':994 'dep':458,516,1048 'depend':408,664,702,1133,1239,1409 'deploy':28,62,727,976,1447,1550,1581,1589 'describ':1656,1672 'detect':164,252 'dev':939 'dev/prod':1256 'dev/staging/prod':678 'develop':269,873,876,901,904,910,913,920,928,1312,1315,1494,1516 'development-specif':1515 'devop':114,1575,1588 'devops-expert':113,1574 'diagnost':1379 'differ':1337 'difficulti':1502 'direct':1201 'discoveri':675,1347,1359,1493 'dist/index.js':562 'distroless':440,818,1169,1461 'dns':1475 'docker':2,8,36,42,82,162,165,171,173,185,225,238,305,319,331,341,345,358,369,379,583,658,1015,1023,1123,1235,1585,1615 'docker-compos':378 'docker-expert':1 'dockerfil':197,257,392,447,608,848,1036,1066,1094,1127 'dockerignor':216,430,1162,1407 'driver':180,788,791 'drop':649 'e':176 'echo':169,316,339,384 'ecs/fargate':106 'effici':428 'emphas':1632 'endpoint':1373 'env':590,927,1207 'environ':163,272,676,744,822,900,925,1150,1252,1332,1512,1684 'environment-specif':1251,1683 'error':1477 'establish':1600 'exampl':124 'exec':359 'execut':1420,1651 'exhaust':1270 'exist':256,275 'exit':558 'expert':3,10,37,44,94,104,115,123,138,1531,1536,1547,1556,1566,1576,1599,1689 'expertis':80,131,296,389,662,1617 'expos':540,868,1329,1417 'exposur':889,970,1349 'extern':801,805,809 'f':199,211,218,555,715 'failur':993,1416,1474,1500 'fallback':160 'file':747,751,755,845,884,1303,1452 'files/tools':1286 'filesystem':656 'final':1280 'find':195,202,214 'first':150 'flexibl':425 'focus':568,1125,1619 'follow':1356 'forc':472 'format':227,240 'foundat':1586 'frequent':1388 'frontend':709,787 'futur':95 'g':503,619,628 'gcr.io':854 'gcr.io/distroless/nodejs18-debian11':853 'github':96,102,1545 'github-actions-expert':101,1544 'glob':153 'grep':152,175 'guidelin':1526 'handl':964 'handoff':1525 'hardcod':1426 'harden':19,53,566,611,1182,1624 'head':190,200,212,219,236,249,329,367 'health':666,967,1091,1096,1229,1243,1371,1489 'health-check.sh':1099 'healthcheck':542,711,770,1105 'healthi':707 'high':399 'high-prior':398 'histori':320 'hot':878,1320,1498 'id':1078 'identifi':280 'imag':231,239,261,420,436,443,593,740,812,819,851,1164,1212,1277,1281,1425,1440,1444,1462,1594 'implement':1231,1290,1362,1374 'includ':1154 'index.js':871 'industri':33,67 'info':174 'infrastructur':1572 'ingress':91,1540 'input':1698 'instal':172,409,1228 'integr':875,894,966,1314,1524,1605 'intern':148,793,1363 'interv':543,718,780,1106 'invalid':1390 'invok':71,133 'isol':1250,1341 'isreadi':776 'issu':75,1378,1382,1470,1509,1543,1571 'iter':1504 'json':463,483,537,637,1053 'keep':423 'kept':1213 'key':445,1080,1082,1087 'knowledg':14,48 'kubernet':87,93,129,137,1532,1535 'kubernetes-expert':92,136,1534 'languag':1565,1597 'language-specif':1596 'larg':1396 'latest':1031 'layer':404,831,1140,1177,1210,1311,1394 'level':287,1569 'limit':605,729,947,978,1265,1350,1660 'linux/amd64':1027 'linux/arm64':1028 'load':1367 'localhost':556,716 'ls':187 'maintain':1634 'manag':434,582,665,677,943,962,972,1042,1065,1203,1305,1435,1538 'match':255,1669 'max':996 'memori':732,737,949,981,986 'metric':969 'minim':418,597,820,849,1176,1222 'minut':1387 'mismatch':1513 'miss':1480,1706 'modern':1640 'monitor':965,1097,1234 'mount':685,882,1037,1055,1075,1326,1508 'multi':21,55,264,395,415,450,838,1012,1130,1143,1292,1404,1464 'multi-architectur':1011,1291 'multi-stag':20,54,263,394,414,449,837,1129,1142,1403,1463 'multiarch':1020 'multiarch-build':1019 'myapp':1030 'name':196,203,207,215,229,349,682,759,800,1018,1355,1485 'necessari':844,1155,1226,1352 'need':1263,1297,1331 'network':670,673,708,768,786,1246,1345,1360,1364,1469,1481,1488 'nextj':509,518,526,534,539 'no-cach':307 'no-trunc':324 'node':454,474,496,561,614,926,1044 'nodej':506,519,527,535 'non':571,1184,1197,1437 'non-root':570,1183,1196,1436 'npm':465,469,485,489,492,639,937,1060 'o':206 'on-failur':991 'optim':17,51,393,406,448,814,825,846,945,1035,1128,1139,1159,1283,1289,1408,1466,1564,1592,1622 'orchestr':24,58,88,130,276,660,661,1237,1533,1611 'order':669,1395 'outdat':1423 'output':126,1678 'outsid':81 'overrid':914 'overview':1659 'packag':462,482,636,1041,1052,1227,1304 'parallel':955 'password':754,763,808 'pattern':25,59,258,401,452,607,692,877,1005,1583,1629 'perform':156,941,944,954,960,1279,1381,1570,1633 'period':549,725,1112 'permiss':1699 'persist':120,687,1262,1558 'pg':775 'pipelin':1542 'platform':1008,1026 'pleas':132 'pod':89,1537 'polici':989,1272 'poor':1393,1457 'port':888,931,935,1328,1348,1482,1510 'postgr':741,745,749,753,765,778,796 'practic':13,35,47,69,1621,1638 'prevent':1268 'prioriti':400 'problem':283,1003,1442,1496 'problem-solv':1002 'process':961,1090 'product':27,61,271,419,468,494,642,689,701,850,1063,1151,1275,1319,1343,1456,1610,1627 'production-readi':688,1626 'project':192 'proper':575,1204,1240,1323,1334,1491,1519 'provid':1584,1613 'prune':493 'ps':226,363 'push':1032 'quickview':333 'read':151,653 'read-on':652 'readi':690,1628 'recommend':83,1529 'reduct':816 'regular':595,1431 'reload':879,1321,1499 'remot':903 'remov':826 'repositori':242 'requir':76,128,1302,1697 'reserv':734,983 'resili':1276 'resolut':1476 'resourc':604,728,942,946,971,977,1264,1269 'respect':262 'restart':988,1271 'restrict':603 'retri':551,722,784,1114 'review':1119,1122,1690 'rm':347 'root':572,655,1185,1198,1391,1419,1421,1438,1449,1478,1505 'run':224,346,464,484,488,490,501,617,638,834,938,1054,1074,1101,1172,1194,1310 'runtim':182,343,500,600,821,959,1149 'safeti':1700 'scan':1219,1415 'scope':1671 'scout':332,342 'scratch':442,1171 'secret':581,584,588,757,798,1064,1070,1077,1202,1418,1427,1434 'secur':18,52,303,565,567,594,601,606,610,1181,1361,1411,1414,1607,1623,1636 'security-harden':609 'select':437,1165,1300,1459,1468 'separ':407,1146,1255,1317 'server':177 'servic':90,112,663,674,696,706,915,974,1238,1249,1346,1353,1354,1472,1484,1492,1539 'set':651 'setup':145,277,880 'shell':157,774 'signal':963 'size':246,421,813,815,1278,1282,1441 'skill':1647,1663 'skill-docker-expert' 'slow':1384,1448,1503 'solut':292,1402,1430,1460,1486,1514,1631 'solv':1004 'sophist':1095 'sourc':411,1136 'source-sickn33' 'specif':79,110,282,579,897,1189,1253,1517,1563,1580,1598,1685 'stabil':952 'stage':22,56,265,396,416,451,839,1131,1144,1152,1338,1405,1465 'standard':1602 'start':548,724,1111 'start-period':547,1110 'startup':668 'status':222,233 'stop':86,140,370,1691 'storag':179 'strateg':836 'strategi':29,63,293,444,681,817,1093,1258,1401,1521,1560 'structur':193 'subag':139 'substitut':1681 'success':318,1703 'support':906 'surfac':599,1224 'switch':84 'symptom':1383,1413,1443,1471,1497 'tabl':228,241 'tag':244 'target':700,919,1058,1316,1518 'task':1667 'techniqu':446,847 'terraform':1577 'test':312,322,335,352,354,362,373,712,771,893,896,1339,1376,1687 'test-build':311,321,334,353 'test-specif':895 'thorough':299 'time':587,1069 'timeout':545,720,782,1108 'tool':149,828,892,909,1454 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':1676 'true':794,802,806,810 'trunc':326 'type':198,210,217,1056,1076 'u':510,626,777 'uid/gid':580,1190 'ultra':78 'ultra-specif':77 'unnecessari':1285,1451 'up-to-d':1214 'updat':596,1433 'use':134,147,1022,1085,1645,1661 'user':538,573,576,647,750,761,779,804,1186,1199,1200,1429 'util':958 'valid':298,304,344,351,361,372,377,387,1686 'validation-test':350,360,371 'var':591,1208 'variabl':1333 'version':166,178,694 'via':907 'volum':680,683,764,795,881,921,1257,1325,1507,1520 'vs':270,439,441,1168,1170 'vulner':1221,1412 'watch':885 'window':999 'workdir':459,479,512,630,866,1049 'workflow':874,911,1313,1495,1551,1642,1653 'x':1103 'yaml':209,693,912,973 'yml':205","prices":[{"id":"89709036-b0fb-48d6-8c6f-287d70c4273f","listingId":"32daf286-b92a-410b-a091-2832fb3dd0f9","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:24:40.346Z"}],"sources":[{"listingId":"32daf286-b92a-410b-a091-2832fb3dd0f9","source":"github","sourceId":"sickn33/antigravity-awesome-skills/docker-expert","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/docker-expert","isPrimary":false,"firstSeenAt":"2026-04-18T21:36:14.494Z","lastSeenAt":"2026-04-25T12:50:42.874Z"},{"listingId":"32daf286-b92a-410b-a091-2832fb3dd0f9","source":"skills_sh","sourceId":"sickn33/antigravity-awesome-skills/docker-expert","sourceUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/docker-expert","isPrimary":true,"firstSeenAt":"2026-04-18T20:24:40.346Z","lastSeenAt":"2026-04-25T12:40:08.501Z"}],"details":{"listingId":"32daf286-b92a-410b-a091-2832fb3dd0f9","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"docker-expert","github":{"repo":"sickn33/antigravity-awesome-skills","stars":35034,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-25T06:33:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"f114c2184af1669f933b2ed8cf60034f652156e0","skill_md_path":"skills/docker-expert/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/docker-expert"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"docker-expert","description":"You are an advanced Docker containerization expert with comprehensive, practical knowledge of container optimization, security hardening, multi-stage builds, orchestration patterns, and production deployment strategies based on current industry best practices."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/docker-expert"},"updatedAt":"2026-04-25T12:50:42.874Z"}}