解决Docker客户端无法连接到Docker守护进程
输入:
systemctl status docker
显示:
Authorization not available. Check if polkit service is running or see debug message for more information.
输入:
docker ps
显示:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
解决(可以直接跳到第四步,不行的话再执行前几步)
1、重新安装 polkit 服务(可选)
卸载旧版本的polkit:
sudo yum remove polkit
清除旧版本的polkit数据:
sudo rm -rf /var/lib/polkit-1/
安装新版本的polkit:
sudo yum install polkit
2、重新安装dbus服务(可选)
卸载旧版本的dbus:
sudo yum remove dbus
清除缓存:
sudo yum clean all
安装新版本的dbus:
sudo yum install dbus
3、重新安装systemd服务(可选)
sudo yum reinstall systemd
以上步骤确保系统服务正常
4、创建用户/组
getent group polkitd >/dev/null && echo -e "\e[1;32mpolkitd group already exists\e[0m" || { groupadd -r polkitd && echo -e "\e[1;33mAdded missing polkitd group\e[0m" || echo -e "\e[1;31mAdding polkitd group FAILED\e[0m"; }
getent passwd polkitd >/dev/null && echo -e "\e[1;32mpolkitd user already exists\e[0m" || { useradd -r -g polkitd -d / -s /sbin/nologin -c "User for polkitd" polkitd && echo -e "\e[1;33mAdded missing polkitd user\e[0m" || echo -e "\e[1;31mAdding polkitd user FAILED\e[0m"; }
5、对 polkit 的相关文件进行重新授权
rpm -Va polkit\* && echo -e "\e[1;32mpolkit* rpm verification passed\e[0m" || { echo -e "\e[1;33mResetting polkit* rpm user/group ownership & perms\e[0m"; rpm --setugids polkit polkit-pkla-compat; rpm --setperms polkit polkit-pkla-compat; }
6、备份/var/run
mv /var/run /var/run.old
mv /var/lock /var/lock.old
7、重新创建符号链接
ln -s /run /var/
ln -s /run/lock /var/
8、同步更改
sync; sync
9、重启服务器
reboot
10、启动dbus、polkit
sudo systemctl start dbus
sudo systemctl start polkit
sudo systemctl start docker
sudo systemctl status docker