docker network ls 显示空列表但容器能联网,是因为默认 bridge 网络被隐藏;运行 docker network ls --verbose 可见,且容器 inspect 可确认是否使用 bridge 网络。

docker network ls 显示空列表但容器能联网?
说明:这通常不是网络损坏,而是你当前在 docker network ls 中看不到默认桥接网络(bridge),因为 Docker 默认隐藏了内置网络的详细信息——除非显式创建或用 --verbose 查看。
实操建议:
- 运行
docker network ls --verbose,能看到bridge网络的驱动、作用域和是否启用 IPv6 - 检查容器是否真的用了默认网络:
docker inspect <container_id> | grep -A 5 "Networks"</container_id>,确认它连的是bridge而非host或none - 若容器能 ping 通外网但无法解析域名,问题不在网络拓扑,而在
/etc/resolv.conf配置或 DNS 转发设置(比如宿主机使用systemd-resolved时,Docker 可能拿到127.0.0.53并转发失败)
bind mount 和 volume 的路径权限总出错?
说明:Linux 容器里进程以非 root 用户运行时,挂载宿主机路径容易因 UID/GID 不匹配导致“Permission denied”。volume 虽由 Docker 管理路径,但默认属主仍是 root,同样会卡住。
实操建议:
- 用 bind mount 时,提前在宿主机上
chown -R 1001:1001 /path/on/host(1001 是容器内应用用户的 UID/GID),别依赖:Z或:zSELinux 标签(仅限 SELinux 启用环境) - 用
docker volume create --driver local --opt o=uid=1001,gid=1001 myvol创建带权限的 volume(注意:仅local驱动支持o=参数) - 避免在
Dockerfile中用VOLUME指令后又在ENTRYPOINT里直接写入文件——Docker 会在容器启动时自动 chown 为 root,覆盖掉你之前设好的权限
容器重启后 overlay2 目录暴涨且 df 显示磁盘满?
说明:/var/lib/docker/overlay2 增长快,不一定是镜像或容器变大,更可能是未清理的“悬空层”(dangling layers)或日志文件堆积。Docker 自身不会自动删旧层,尤其在频繁 docker build + docker run 场景下。
Destoon B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。 系统特性1、跨平台。支持Linux/Unix/Windows服务器,支持Apache/IIS/Zeus等2、跨浏览器。基于最新Web标准构建,在
实操建议:
- 先查真实占用来源:
du -sh /var/lib/docker/overlay2/*/diff | sort -hr | head -n 5,定位最大的 diff 目录,再docker ps -a --filter "status=exited" -q | xargs docker rm清理退出容器 - 限制容器日志大小,在
docker run时加--log-opt max-size=10m --log-opt max-file=3;已运行容器需停机后改/var/lib/docker/containers/<id>/hostconfig.json</id>并重启 dockerd - 慎用
docker system prune -a:它会删掉所有未被引用的镜像、构建缓存、网络,包括你本地 build 过但没打 tag 的中间镜像——这些可能正被某个 CI 脚本依赖
用 host 网络模式却访问不到 localhost:8080?
说明:在 --network=host 模式下,容器共享宿主机网络命名空间,localhost 指的就是宿主机本身。但如果宿主机服务只监听 127.0.0.1:8080(而非 0.0.0.0:8080),容器内用 curl http://localhost:8080 仍会失败——因为 localhost 解析成 127.0.0.1,而该地址的 socket 绑定是严格限定的。
实操建议:
- 确认宿主机服务监听的是
0.0.0.0:8080,用ss -tlnp | grep :8080查看Local Address:Port列 - 如果改不了服务绑定地址,容器内可直接用宿主机真实 IP(如
192.168.1.100)访问,避开localhost解析歧义 - 不要在 host 网络模式下同时跑多个监听同一端口的服务——没有网络隔离,端口冲突会静默失败,且
docker logs不报错
网络和存储的耦合点常藏在细节里:比如 overlay2 的 mount options、dockerd 的 storage-driver 配置、甚至宿主机 /proc/sys/fs/inotify/max_user_watches 的值,都可能让看似简单的操作突然卡住。别只盯着容器命令,多看一眼宿主机的内核参数和挂载状态。









