networking
11
总安装量
5
周安装量
#28781
全站排名
安装命令
npx skills add https://github.com/chaterm/terminal-skills --skill networking
Agent 安装分布
claude-code
5
opencode
4
antigravity
3
windsurf
3
github-copilot
3
codex
3
Skill 文档
Docker 容å¨ç½ç»
æ¦è¿°
容å¨ç½ç»æ¨¡å¼ã跨主æºéä¿¡çæè½ã
ç½ç»é©±å¨
ç½ç»ç±»å
# 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 ç½ç»
é»è®¤ bridge
# 容å¨ä½¿ç¨é»è®¤ bridge
docker run -d --name web nginx
# æ¥ç IP
docker inspect web --format '{{.NetworkSettings.IPAddress}}'
# é»è®¤ bridge 容å¨é´éè¿ IP éä¿¡
# 䏿¯æå®¹å¨åè§£æ
èªå®ä¹ bridge
# å建ç½ç»
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
Host ç½ç»
# 使ç¨ä¸»æºç½ç»
docker run -d --network host nginx
# 容å¨ç´æ¥ä½¿ç¨ä¸»æºç«¯å£
# æ éç«¯å£æ å°
# æ§è½æå¥½ï¼ä½ç«¯å£å¯è½å²çª
None ç½ç»
# æ ç½ç»
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 é ç½®
# èªå®ä¹ 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
Overlay ç½ç»ï¼Swarmï¼
# åå§å 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 ç½ç»
# å建 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
常è§åºæ¯
åºæ¯ 1ï¼å®¹å¨é´éä¿¡
# å建ç½ç»
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
åºæ¯ 2ï¼é离åå端
# å建ç½ç»
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
åºæ¯ 3ï¼è°è¯ç½ç»é®é¢
# ä½¿ç¨ 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
åºæ¯ 4ï¼éå¶ç½ç»å¸¦å®½
# ä½¿ç¨ 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