Ubuntu 21.10下Docker-compose无法停止容器,提示permission denied
解决Ubuntu 21.10中Docker-Compose无法停止容器的权限问题
1. 尝试强制终止单个容器
如果docker-compose down失败,先单独对容器执行强制停止命令,再尝试down:
# 替换为你的容器ID,比如a6eefb47ad58 sudo docker kill <container-id> # 或者发送SIGKILL强制停止 sudo docker stop -t 0 <container-id>
执行完后再运行docker-compose down,验证是否恢复正常。
2. 检查容器进程状态
如果kill命令也无效,排查容器对应的主机进程是否处于不可中断睡眠状态(D状态):
# 获取容器对应的主机PID docker inspect --format '{{.State.Pid}}' <container-id> # 检查该进程的状态 ps aux | grep <pid>
若进程状态显示为D,说明进程在等待IO(比如挂载磁盘卡住),这种情况只能重启系统,或排查存储设备的异常。
3. 修复Docker Socket权限
确认Docker套接字的权限配置正确:
ls -l /var/run/docker.sock
正常输出应为srw-rw---- 1 root docker ...,若权限不符,执行:
sudo chown root:docker /var/run/docker.sock
之后刷新用户组权限(无需重启):
newgrp docker
4. 临时关闭AppArmor限制
Ubuntu默认启用AppArmor,可能对Docker容器操作造成限制:
sudo aa-complain docker-containerd
问题解决后可重新启用强制模式:sudo aa-enforce docker-containerd
5. 升级Docker或系统版本
Ubuntu 21.10已停止官方支持,内置Docker包可能存在已知bug,建议:
- 升级系统至Ubuntu 22.04 LTS(长期支持版)
- 手动升级Docker到最新稳定版:
# 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 添加Docker官方源 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu impish stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装最新版Docker sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
6. 查看Docker守护进程日志定位细节
若以上方法均无效,查看Docker服务日志获取详细报错:
journalctl -u docker.service -f
保持日志窗口打开,执行停止容器命令,观察日志中的具体错误信息以定位问题。
内容的提问来源于stack exchange,提问作者Tebe
相关产品推荐
相关产品推荐

