Manusで任意のスキルを実行
ワンクリックで
ワンクリックで
ワンクリックでManusで任意のスキルを実行
始めるnetworking
スター49
フォーク12
更新日2026年1月19日 10:12
Docker 容器网络
インストール
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SKILL.md
readonlyメニュー
Docker 容器网络
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
OpenClaw 配置管理
OpenClaw 安装与部署
OpenClaw 运维与故障修复
OpenClaw 问题排查与诊断
备份策略设计
云备份方案
| name | networking |
| description | Docker 容器网络 |
| version | 1.0.0 |
| author | terminal-skills |
| tags | ["docker","networking","bridge","overlay"] |
容器网络模式、跨主机通信等技能。
# bridge(默认)- 单主机容器通信
# host - 共享主机网络
# none - 无网络
# overlay - 跨主机通信(Swarm)
# macvlan - 分配 MAC 地址
# 列出网络
docker network ls
# 网络详情
docker network inspect bridge
docker network inspect network_name
# 查看容器网络
docker inspect container_name --format '{{json .NetworkSettings.Networks}}'
# 容器使用默认 bridge
docker run -d --name web nginx
# 查看 IP
docker inspect web --format '{{.NetworkSettings.IPAddress}}'
# 默认 bridge 容器间通过 IP 通信
# 不支持容器名解析
# 创建网络
docker network create mynet
docker network create --driver bridge --subnet 172.20.0.0/16 mynet
# 使用自定义网络
docker run -d --name web --network mynet nginx
docker run -d --name api --network mynet myapi
# 自定义网络支持容器名解析
docker exec api ping web
# 创建网络
docker network create frontend
docker network create backend
# 容器连接多个网络
docker run -d --name app --network frontend myapp
docker network connect backend app
# 断开网络
docker network disconnect frontend app
# 使用主机网络
docker run -d --network host nginx
# 容器直接使用主机端口
# 无需端口映射
# 性能最好,但端口可能冲突
# 无网络
docker run -d --network none myapp
# 完全隔离,无网络访问
# 适用于安全敏感场景
# 映射端口
docker run -d -p 8080:80 nginx # HOST:CONTAINER
docker run -d -p 80:80 -p 443:443 nginx # 多端口
docker run -d -p 127.0.0.1:8080:80 nginx # 绑定特定 IP
docker run -d -P nginx # 随机端口
# 查看端口映射
docker port container_name
# 自定义 DNS
docker run -d --dns 8.8.8.8 nginx
docker run -d --dns 8.8.8.8 --dns 8.8.4.4 nginx
# 自定义主机名
docker run -d --hostname myhost nginx
# 添加 hosts 记录
docker run -d --add-host db:192.168.1.100 nginx
# 创建网络
docker network create mynet
# 使用别名
docker run -d --name web --network mynet --network-alias webserver nginx
# 其他容器可通过别名访问
docker run --rm --network mynet busybox ping webserver
# 初始化 Swarm
docker swarm init
# 创建 overlay 网络
docker network create -d overlay myoverlay
# 创建可附加的 overlay(非 Swarm 服务也可使用)
docker network create -d overlay --attachable myoverlay
# 在服务中使用
docker service create --name web --network myoverlay nginx
# 创建 macvlan 网络
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=eth0 \
mymacvlan
# 使用 macvlan
docker run -d --network mymacvlan --ip 192.168.1.100 nginx
# 容器获得独立 MAC 地址,可直接在物理网络通信
# 进入容器
docker exec -it container_name sh
# 网络工具
apt-get update && apt-get install -y iputils-ping curl netcat-openbsd
# 或使用 netshoot
docker run -it --network container:target_container nicolaka/netshoot
# 查看容器 IP
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
# 查看网络中的容器
docker network inspect mynet -f '{{range .Containers}}{{.Name}} {{.IPv4Address}}{{"\n"}}{{end}}'
# 测试连通性
docker exec container1 ping container2
docker exec container1 curl http://container2:80
# 创建网络
docker network create app-network
# 启动数据库
docker run -d --name db --network app-network postgres
# 启动应用(通过容器名访问数据库)
docker run -d --name app --network app-network \
-e DATABASE_URL=postgres://db:5432/mydb \
myapp
# 创建网络
docker network create frontend
docker network create backend
# 前端只在 frontend
docker run -d --name nginx --network frontend -p 80:80 nginx
# 后端连接两个网络
docker run -d --name api --network frontend myapi
docker network connect backend api
# 数据库只在 backend
docker run -d --name db --network backend postgres
# 使用 netshoot 调试
docker run -it --rm --network container:target nicolaka/netshoot
# 常用命令
ip addr
ss -tlnp
curl -v http://service:port
tcpdump -i eth0
nslookup service_name
# 使用 tc 限制带宽(需要 NET_ADMIN 权限)
docker run -d --cap-add NET_ADMIN myapp
# 在容器内
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
| 问题 | 排查方法 |
|---|---|
| 容器间无法通信 | 检查是否在同一网络 |
| DNS 解析失败 | 检查是否使用自定义网络 |
| 端口无法访问 | 检查端口映射、防火墙 |
| 网络性能差 | 考虑使用 host 网络 |
# 检查网络配置
docker network inspect network_name
# 检查容器网络
docker inspect container_name | jq '.[0].NetworkSettings'
# 检查 iptables 规则
iptables -L -n -t nat