
Docker Networking
- 32 installs
- 2 repo stars
- Updated January 5, 2026
- pluginagentmarketplace/custom-plugin-docker
Pick and document the right Docker network driver (bridge, overlay, host, none) when wiring containers for local dev or production.
About
Docker Networking is a configuration-reference agent skill from a containers-category plugin that helps solo builders choose Docker network drivers and apply the right CLI patterns. It documents bridge as the default single-host option, overlay for Docker Swarm multi-host services, host for performance-sensitive workloads that share the host network namespace, and none for fully isolated containers. The bundled YAML-style settings describe logging, validation strictness, markdown output with examples, and environment overrides that tighten validation in production. Use it when you are sketching compose files, debugging why containers cannot reach each other, or standardizing network creation commands across dev and prod. It is reference and template material rather than an automated provisioner, so you still run Docker on your machine or CI. Multi-phase placement reflects design during build integrations and ongoing operate/infra tuning after ship.
- Reference for four drivers: bridge (default single-host), overlay (Swarm multi-host), host, and none
- Example commands for `docker network create` and `docker run --network` per driver
- Generated plugin config schema with dev vs production validation strictness
- Integrations toggles for git, linter, and formatter in the packaged skill config
Docker Networking by the numbers
- 32 all-time installs (skills.sh)
- +1 installs in the week ending Jul 26, 2026 (Skillselion tracking)
- Ranked #855 of 1,453 DevOps & CI/CD skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Jul 26, 2026 (Skillselion catalog sync)
npx skills add https://github.com/pluginagentmarketplace/custom-plugin-docker --skill docker-networkingAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 32 |
|---|---|
| repo stars | ★ 2 |
| Security audit | 3 / 3 scanners passed |
| Last updated | January 5, 2026 |
| Repository | pluginagentmarketplace/custom-plugin-docker ↗ |
What it does
Pick and document the right Docker network driver (bridge, overlay, host, none) when wiring containers for local dev or production.
Files
Docker Networking Skill
Master Docker networking concepts and configuration for container communication, service discovery, and network isolation.
Purpose
Configure and troubleshoot Docker networks for development and production environments with proper isolation and service discovery.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| driver | enum | No | bridge | bridge/overlay/host/macvlan |
| subnet | string | No | - | Custom subnet CIDR |
| internal | boolean | No | false | Internal-only network |
Network Drivers
| Driver | Use Case | Multi-Host | Encryption |
|---|---|---|---|
| bridge | Single host, default | No | No |
| overlay | Swarm, multi-host | Yes | Optional |
| host | Max performance | No | N/A |
| macvlan | Physical network | No | No |
| none | Disable networking | No | N/A |
Configuration Examples
Custom Bridge Network
# Create network with custom subnet
docker network create \
--driver bridge \
--subnet 172.28.0.0/16 \
--gateway 172.28.0.1 \
my_network
# Run container on network
docker run -d --name app \
--network my_network \
nginx:alpineDocker Compose Networking
services:
frontend:
image: nginx:alpine
networks:
- public
ports:
- "80:80"
backend:
image: node:20-alpine
networks:
- public
- private
expose:
- "3000"
database:
image: postgres:16-alpine
networks:
- private # Internal only
networks:
public:
driver: bridge
private:
driver: bridge
internal: true # No external accessService Discovery
# Containers can reach each other by service name
services:
app:
image: myapp
environment:
# Use service name as hostname
DATABASE_HOST: database
CACHE_HOST: redis
database:
image: postgres:16-alpine
redis:
image: redis:alpineOverlay Network (Swarm)
# Create encrypted overlay
docker network create \
--driver overlay \
--attachable \
--opt encrypted \
my_overlayPort Mapping
# Map host:container
docker run -p 8080:80 nginx
# Bind to specific interface
docker run -p 127.0.0.1:8080:80 nginx
# Random host port
docker run -P nginx
# UDP port
docker run -p 53:53/udp dnsserverError Handling
Common Errors
| Error | Cause | Solution |
|---|---|---|
network not found | Typo or deleted | Create network |
address in use | Port conflict | Change port |
cannot reach | Wrong network | Check network membership |
DNS failed | Service not ready | Add health checks |
Fallback Strategy
1. Verify network exists: docker network ls 2. Check container membership: docker network inspect <net> 3. Test DNS: docker exec app nslookup backend
Troubleshooting
Debug Checklist
- [ ] Network created?
docker network ls - [ ] Container connected?
docker inspect <container> - [ ] DNS resolving?
nslookupfrom container - [ ] Port mapped?
docker port <container>
Diagnostic Commands
# List networks
docker network ls
# Inspect network
docker network inspect my_network
# Test connectivity
docker exec app ping -c 3 database
# Check DNS
docker exec app nslookup backend
# View port mappings
docker port container_nameNetwork Debugging
# Enter container network namespace
docker exec -it app sh
# Check DNS resolution
cat /etc/resolv.conf
nslookup database
# Check connectivity
ping -c 3 backend
curl http://backend:3000/healthUsage
Skill("docker-networking")Related Skills
- docker-compose-setup
- docker-swarm
# docker-networking Configuration
# Category: containers
# Generated: 2025-12-30
skill:
name: docker-networking
version: "1.0.0"
category: containers
settings:
# Default settings for docker-networking
enabled: true
log_level: info
# Category-specific defaults
validation:
strict_mode: false
auto_fix: false
output:
format: markdown
include_examples: true
# Environment-specific overrides
environments:
development:
log_level: debug
validation:
strict_mode: false
production:
log_level: warn
validation:
strict_mode: true
# Integration settings
integrations:
# Enable/disable integrations
git: true
linter: true
formatter: true
# Docker Network Configuration Reference
networks:
bridge:
description: Default network driver
use_case: Single host container communication
command: "docker network create mynetwork"
overlay:
description: Multi-host networking
use_case: Docker Swarm services
command: "docker network create -d overlay myoverlay"
host:
description: Use host networking
use_case: Performance-critical applications
command: "docker run --network host myimage"
none:
description: No networking
use_case: Isolated containers
command: "docker run --network none myimage"
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "docker-networking Configuration Schema",
"type": "object",
"properties": {
"skill": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"version": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"category": {
"type": "string",
"enum": [
"api",
"testing",
"devops",
"security",
"database",
"frontend",
"algorithms",
"machine-learning",
"cloud",
"containers",
"general"
]
}
},
"required": [
"name",
"version"
]
},
"settings": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": true
},
"log_level": {
"type": "string",
"enum": [
"debug",
"info",
"warn",
"error"
]
}
}
}
},
"required": [
"skill"
]
}Docker Networking Guide
Overview
This guide provides comprehensive documentation for the docker-networking skill in the custom-plugin-docker plugin.
Category: Containers
Quick Start
Prerequisites
- Familiarity with containers concepts
- Development environment set up
- Plugin installed and configured
Basic Usage
# Invoke the skill
claude "docker-networking - [your task description]"
# Example
claude "docker-networking - analyze the current implementation"Core Concepts
Key Principles
1. Consistency - Follow established patterns 2. Clarity - Write readable, maintainable code 3. Quality - Validate before deployment
Best Practices
- Always validate input data
- Handle edge cases explicitly
- Document your decisions
- Write tests for critical paths
Common Tasks
Task 1: Basic Implementation
# Example implementation pattern
def implement_docker_networking(input_data):
"""
Implement docker-networking functionality.
Args:
input_data: Input to process
Returns:
Processed result
"""
# Validate input
if not input_data:
raise ValueError("Input required")
# Process
result = process(input_data)
# Return
return resultTask 2: Advanced Usage
For advanced scenarios, consider:
- Configuration customization via
assets/config.yaml - Validation using
scripts/validate.py - Integration with other skills
Troubleshooting
Common Issues
| Issue | Cause | Solution |
|---|---|---|
| Skill not found | Not installed | Run plugin sync |
| Validation fails | Invalid config | Check config.yaml |
| Unexpected output | Missing context | Provide more details |
Related Resources
- SKILL.md - Skill specification
- config.yaml - Configuration options
- validate.py - Validation script
---
Last updated: 2025-12-30
Docker Networking Patterns
Design Patterns
Pattern 1: Input Validation
Always validate input before processing:
def validate_input(data):
if data is None:
raise ValueError("Data cannot be None")
if not isinstance(data, dict):
raise TypeError("Data must be a dictionary")
return TruePattern 2: Error Handling
Use consistent error handling:
try:
result = risky_operation()
except SpecificError as e:
logger.error(f"Operation failed: {e}")
handle_error(e)
except Exception as e:
logger.exception("Unexpected error")
raisePattern 3: Configuration Loading
Load and validate configuration:
import yaml
def load_config(config_path):
with open(config_path) as f:
config = yaml.safe_load(f)
validate_config(config)
return configAnti-Patterns to Avoid
❌ Don't: Swallow Exceptions
# BAD
try:
do_something()
except:
pass✅ Do: Handle Explicitly
# GOOD
try:
do_something()
except SpecificError as e:
logger.warning(f"Expected error: {e}")
return default_valueCategory-Specific Patterns: Containers
Recommended Approach
1. Start with the simplest implementation 2. Add complexity only when needed 3. Test each addition 4. Document decisions
Common Integration Points
- Configuration:
assets/config.yaml - Validation:
scripts/validate.py - Documentation:
references/GUIDE.md
---
Pattern library for docker-networking skill
#!/usr/bin/env python3
"""
Validation script for docker-networking skill.
Category: containers
"""
import os
import sys
import yaml
import json
from pathlib import Path
def validate_config(config_path: str) -> dict:
"""
Validate skill configuration file.
Args:
config_path: Path to config.yaml
Returns:
dict: Validation result with 'valid' and 'errors' keys
"""
errors = []
if not os.path.exists(config_path):
return {"valid": False, "errors": ["Config file not found"]}
try:
with open(config_path, 'r') as f:
config = yaml.safe_load(f)
except yaml.YAMLError as e:
return {"valid": False, "errors": [f"YAML parse error: {e}"]}
# Validate required fields
if 'skill' not in config:
errors.append("Missing 'skill' section")
else:
if 'name' not in config['skill']:
errors.append("Missing skill.name")
if 'version' not in config['skill']:
errors.append("Missing skill.version")
# Validate settings
if 'settings' in config:
settings = config['settings']
if 'log_level' in settings:
valid_levels = ['debug', 'info', 'warn', 'error']
if settings['log_level'] not in valid_levels:
errors.append(f"Invalid log_level: {settings['log_level']}")
return {
"valid": len(errors) == 0,
"errors": errors,
"config": config if not errors else None
}
def validate_skill_structure(skill_path: str) -> dict:
"""
Validate skill directory structure.
Args:
skill_path: Path to skill directory
Returns:
dict: Structure validation result
"""
required_dirs = ['assets', 'scripts', 'references']
required_files = ['SKILL.md']
errors = []
# Check required files
for file in required_files:
if not os.path.exists(os.path.join(skill_path, file)):
errors.append(f"Missing required file: {file}")
# Check required directories
for dir in required_dirs:
dir_path = os.path.join(skill_path, dir)
if not os.path.isdir(dir_path):
errors.append(f"Missing required directory: {dir}/")
else:
# Check for real content (not just .gitkeep)
files = [f for f in os.listdir(dir_path) if f != '.gitkeep']
if not files:
errors.append(f"Directory {dir}/ has no real content")
return {
"valid": len(errors) == 0,
"errors": errors,
"skill_name": os.path.basename(skill_path)
}
def main():
"""Main validation entry point."""
skill_path = Path(__file__).parent.parent
print(f"Validating docker-networking skill...")
print(f"Path: {skill_path}")
# Validate structure
structure_result = validate_skill_structure(str(skill_path))
print(f"\nStructure validation: {'PASS' if structure_result['valid'] else 'FAIL'}")
if structure_result['errors']:
for error in structure_result['errors']:
print(f" - {error}")
# Validate config
config_path = skill_path / 'assets' / 'config.yaml'
if config_path.exists():
config_result = validate_config(str(config_path))
print(f"\nConfig validation: {'PASS' if config_result['valid'] else 'FAIL'}")
if config_result['errors']:
for error in config_result['errors']:
print(f" - {error}")
else:
print("\nConfig validation: SKIPPED (no config.yaml)")
# Summary
all_valid = structure_result['valid']
print(f"\n==================================================")
print(f"Overall: {'VALID' if all_valid else 'INVALID'}")
return 0 if all_valid else 1
if __name__ == "__main__":
sys.exit(main())
Related skills
FAQ
Is Docker Networking safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.