Ubuntu Docker 资源冲突的定位与解决
一、先快速定位冲突类型
ps aux | grep dockerdwhich dockerdocker info | grep -A 10 "Registry Mirrors"sudo snap stop docker && sudo snap disable dockersudo systemctl daemon-reload && sudo systemctl restart docker && sudo systemctl status dockerss -tulpen | grep 80、ss -tulpen | grep 443、ss -tulpen | grep 3306 等df -h、docker system dfdocker ps -a、docker network ls、docker volume ls二、常见冲突场景与对应处理
docker info 输出。--name,或先清理旧容器:docker rm -f <name>;临时任务可用 --rm 自动清理。-p 8081:80),或释放占用端口的进程(ss -tulpen 查 PID 后 kill)。docker login 登录对应仓库(含 Docker Hub 或企业私有仓库)。/etc/resolv.conf)、必要时配置 Docker 守护进程代理(/etc/systemd/system/docker.service.d/http-proxy.conf)、放行 443 出站、必要时重启 Docker 刷新 DNS 配置。docker system prune -af --volumes),或扩容 /var/lib/docker 所在分区。三、用资源限制避免“互相挤占”
docker run --cpus=2 myimagedocker run --memory=512m myimagedocker run --blkio-weight=500 myimagedocker run --device-read-bps=/dev/sda:1mb --device-write-bps=/dev/sda:1mb myimagedeploy.resources 适用于 Swarm 模式;若使用 docker-compose up(非 Swarm),需改用 resources: 的 v2/v3+ 语法 或直接在 docker run 指定限制。四、一套可复用的排查与修复流程
ps aux | grep dockerd、which docker),必要时停用 Snap 版并重启系统 Docker。docker rm -f $(docker ps -aq)(谨慎)、docker network prune -f、docker volume prune -f。ss -tulpen | grep <端口>,结束对应进程或调整映射端口。df -h、docker system df,空间不足先 docker system prune -af --volumes。docker login;检查 DNS 与代理配置,必要时在 /etc/systemd/system/docker.service.d/http-proxy.conf 设置代理并重启 Docker。docker info、docker pull <image>,确认配置生效与资源使用正常。