问题分析
以太坊环境需要用到docker,然后很多时候虚拟机没有设置docker自启动,因此在重启docker的时候,常常出现:
Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.这个错误。
解决办法
解决办法我提供两个,首先先说第一个,这个方法是我在网上看到的,但由于用了这种方法后,会加重虚拟机工作的负担,因此我先把该方法列出来,并不推荐使用。
方法一:修改docker.service文件。
sudo vim /lib/systemd/system/docker.service
将上图红色框内的代码部分修改成ExecStart=/usr/bin/dockerd -H fd:// -s overlay2
重载所修改过的配置文件
sudo systemctl daemon-reload
重启docker服务即可
sudo systemctl restart docker
说明:但由于这种方法修改后,虚拟机会出现卡顿情况,本人不推荐这种方法,至于虚拟机的卡顿情况也是基于个人虚拟机配置决定的,因此使不使用也取决各位读者。
下面的我介绍第二种方法。
方法二:删除docker存储的依赖数据
docker的engine基于Device Mapper提供的一种存储驱动,而它又依赖与 devicemapper,存储的数据目录在/var/lib/docker下。
首先进入docker存储数据目录。
cd /var/lib/docker
删除该目录下的所有文件夹/文件
rm -rf *
删除的时候,可能会出现设备或者资源忙的情况。
解决办法
先用fuser显示出当前哪个程序在使用磁盘上的aufs
然后用umount卸载正在使用aufs的应用程序
fuser -m aufs/
fuser -k aufs/
umount aufs/
rm -rf aufs/
删除以后就可以成功重启docker。
sudo systemctl restart docker