【随手记录】关于docker启动后一直处于Active: activating (start)状态
docker部署之后 systemctl start docker 启动服务,服务状态一直处于 Active: activating (start)状态,
使用journalctl -n 50|grep docker查看日志,第一次发现有错误信息:
warning msg="could not change group /var/run/docker.sock to docker: group docker not found"
这个错误表明Docker守护进程试图将/var/run/docker.sock的组更改为docker组,但是没有找到docker组。这通常发生在安装了Docker但未正确配置用户权限时。
解决方法:
1、创建docker组(如果尚未创建): sudo groupadd docker 2、将当前用户添加到docker组: sudo usermod -aG docker $USER 3、重新创建docker.sock的权限,确保它属于正确的组: sudo chown root:docker /var/run/docker.sock sudo chmod 660 /var/run/docker.sock 4、重新启动Docker服务: sudo systemctl restart docker
重启之后确实没有整个错误了
但是docker服务还是处于Active: activating (start)状态
后面发现firewalld开启着,firewall的底层是使用iptables进行数据过滤,建立在iptables之上,而docker使用iptables来进行网络隔离和管理,这可能会与 Docker 产生冲突。当 firewalld 启动或者重启的时候,将会从 iptables 中移除 DOCKER 的规则,从而影响了 Docker 的正常工作
解决方法:
1、先关闭防火墙 systemctl stop firewalld 2、修改docker配置 #修改docker配置 vim /etc/docker/daemon.json #添加规则 { ... "experimental" : true, "iptables": false } #重启docker systemctl daemon-reload systemctl restart docker 3、开启或重启防火墙 systemctl restart firewalld 4、再次重启docker,docker服务状态正常 systemctl restart docker
此时docker服务的端口只能本地127.0.0.1访问,再打开firewalld防火墙,且开启NAT转发功能后,docker和外部就可以正常访问了