本文目录导读:

- 清理 Docker 残留网络
- 清理 Podman 残留网络
- 清理 iptables 残留规则
- 清理残留的网络接口
- 清理 containerd 的残留网络(非 Docker 但使用 containerd)
- 综合清理脚本示例
- ⚠️ 注意事项
在Shell脚本中清理容器残留网络,主要涉及 Docker 和 Podman(或 containerd 等容器运行时) 遗留的网络资源(如网络接口、iptables 规则、网桥等),以下是一些常见且有效的清理方法:
清理 Docker 残留网络
1 清理未使用的网络
# 删除所有未使用的 Docker 网络(不会被任何容器使用) docker network prune -f # 如果有多个未使用网络,使用 -a 删除所有(谨慎) docker network prune -a -f
2 清理已停止容器的网络
# 删除所有已停止的容器 docker container prune -f
3 彻底清理所有残留资源(包括网络)
# 清理所有未被使用的 Docker 对象(容器、网络、镜像、卷等) docker system prune -a -f --volumes
4 手动清理特定的残留网络
docker network ls 显示残留网络(如 none、host 或自定义网络),但仍无法删除:
# 先强制删除该网络(如果无容器使用) docker network rm <network_name> --force
清理 Podman 残留网络
Podman 使用 CNI(容器网络接口)管理网络,残留网络可能存在于 /var/lib/cni/networks/ 中。
1 清理未使用的 Podman 网络
# 删除所有未使用的 Podman 网络 podman network prune -f # 删除特定网络 podman network rm <network_name> --force
2 删除残留的 CNI 网络文件
podman network ls 显示残留网络但无法删除:
# 停止所有容器(避免冲突) podman stop -a # 删除残留的 CNI 文件 sudo rm -rf /var/lib/cni/networks/* # 重新启动 Podman 服务(如果使用 systemd) sudo systemctl restart podman
清理 iptables 残留规则
容器运行时会创建 iptables 规则,如果清理网络后 iptables 规则未自动删除,需要手动清理。
1 删除 Docker 或 Podman 创建的 iptables 规则
# 备份当前规则(可选) sudo iptables-save > /tmp/iptables_backup.txt # 删除 Docker 链(所有 DOCKER 相关规则) sudo iptables -t nat -F DOCKER sudo iptables -t filter -F DOCKER sudo iptables -t filter -F DOCKER-ISOLATION-STAGE-1 sudo iptables -t filter -F DOCKER-ISOLATION-STAGE-2 # 删除 Docker 链本身 sudo iptables -t nat -X DOCKER sudo iptables -t filter -X DOCKER sudo iptables -t filter -X DOCKER-ISOLATION-STAGE-1 sudo iptables -t filter -X DOCKER-ISOLATION-STAGE-2
2 重启 Docker 服务自动重建规则
sudo systemctl restart docker # 或 sudo service docker restart
清理残留的网络接口
容器删除后,有时 ip link 仍显示残留的 veth* 接口。
1 手动删除残留的 veth 接口
# 列出所有网络接口,查找 veth 开头或残留的接口 ip link show | grep -E 'veth|br-' # 删除特定接口(如 veth1234) sudo ip link delete veth1234 type veth
2 批量删除所有 veth 接口
# 获取所有 veth 接口名称并删除
for iface in $(ip link show | grep -o 'veth[a-f0-9]*'); do
sudo ip link delete "$iface" type veth
done
清理 containerd 的残留网络(非 Docker 但使用 containerd)
如果系统使用 containerd 管理容器(如 k3s、nerdctl):
1 使用 nerdctl 清理
# 清理未使用的网络(类似 Docker) nerdctl network prune -f # 删除特定网络 nerdctl network rm <network_name>
2 清理 CNI 配置和状态
# 删除 CNI 配置文件(备份前) sudo rm -rf /etc/cni/net.d/* # 清理 CNI 状态(可能包含残留 IP 分配) sudo rm -rf /var/lib/cni/*
综合清理脚本示例
以下脚本可集成到你的 Shell 脚本中,自动清理 Docker 和 Podman 的残留网络:
#!/bin/bash
echo "开始清理容器残留网络..."
# 清理 Docker
if command -v docker &> /dev/null; then
echo "清理 Docker 残留网络..."
docker container prune -f
docker network prune -f
docker system prune -a -f --volumes
fi
# 清理 Podman
if command -v podman &> /dev/null; then
echo "清理 Podman 残留网络..."
podman stop -a 2>/dev/null
podman container prune -f
podman network prune -f
sudo rm -rf /var/lib/cni/networks/*
sudo systemctl restart podman 2>/dev/null
fi
# 清理残留 veth 接口
echo "清理残留 veth 接口..."
for iface in $(ip link show | grep -o 'veth[a-f0-9]*'); do
sudo ip link delete "$iface" type veth 2>/dev/null || true
done
# 清理残留网桥(Docker 创建的 br-xxx 接口)
echo "清理残留网桥..."
for br in $(ip link show | grep -o 'br-[a-f0-9]*'); do
sudo ip link delete "$br" type bridge 2>/dev/null || true
done
# 清理 iptables 规则(仅清理 Docker 相关)
echo "清理 Docker iptables 规则..."
sudo iptables -t nat -F DOCKER 2>/dev/null || true
sudo iptables -t filter -F DOCKER 2>/dev/null || true
sudo iptables -t nat -X DOCKER 2>/dev/null || true
sudo iptables -t filter -X DOCKER 2>/dev/null || true
echo "残留网络清理完成!"
⚠️ 注意事项
- 谨慎使用
-a或--volumes:会删除所有未使用的资源,包括容器、镜像、卷等。 - iptables 规则清理:如果没有容器运行,清理 Docker 创建的规则是安全的,但不要误删系统自定义规则。
- 备份 CNI 信息:如果使用 Kubernetes 或 Podman,清理 CNI 文件可能导致现有容器无法启动,建议先停止所有容器。
- 权限:清理网络接口和 iptables 规则通常需要
sudo权限。
如果需要更精细的清理(如指定某个网络名称或接口),可以结合 docker network inspect、ip link show 等命令先查看残留资源,再针对性清理。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播