这几天需要用docker上跑一个系统,让网管给准备了一个虚拟机,安装了CentOS最小模式。然后按照:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-centos-7
的方法安装。
安装也可以参考:
【
https://www.jianshu.com/p/3a4cd73e3272
https://github.com/NaturalHistoryMuseum/scratchpads2/wiki/Install-Docker-and-Docker-Compose-(Centos-7)
】
安装后怎么启动都不成功,启动及报错信息如下:
[BI@localhost ~]$ sudo systemctl start docker
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
[BI@localhost ~]$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since 一 2020-07-20 09:42:44 CST; 2s ago
Docs: https://docs.docker.com
Process: 5607 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
Main PID: 5607 (code=exited, status=1/FAILURE)
7月 20 09:42:42 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
7月 20 09:42:42 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
7月 20 09:42:42 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
7月 20 09:42:42 localhost.localdomain systemd[1]: docker.service failed.
7月 20 09:42:44 localhost.localdomain systemd[1]: docker.service holdoff time over, scheduling restart.
7月 20 09:42:44 localhost.localdomain systemd[1]: Stopped Docker Application Container Engine.
7月 20 09:42:44 localhost.localdomain systemd[1]: start request repeated too quickly for docker.service
7月 20 09:42:44 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
7月 20 09:42:44 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
7月 20 09:42:44 localhost.localdomain systemd[1]: docker.service failed.
之前一直纠结在查“Failed to start Docker Application Container Engine.”这个错误信息上。实在找不到能填这个坑的资料。
今天想起来直接用 dockerd 启动一下:
[BI@localhost ~]$ sudo dockerd
INFO[2020-07-20T09:44:04.314580228+08:00] Starting up
INFO[2020-07-20T09:44:04.317114086+08:00] parsed scheme: "unix" module=grpc
INFO[2020-07-20T09:44:04.317135153+08:00] scheme "unix" not registered, fallback to default scheme module=grpc
INFO[2020-07-20T09:44:04.317160451+08:00] ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock 0 <nil>}] <nil>} module=grpc
INFO[2020-07-20T09:44:04.317170666+08:00] ClientConn switching balancer to "pick_first" module=grpc
INFO[2020-07-20T09:44:04.319120792+08:00] parsed scheme: "unix" module=grpc
INFO[2020-07-20T09:44:04.319141272+08:00] scheme "unix" not registered, fallback to default scheme module=grpc
INFO[2020-07-20T09:44:04.319154955+08:00] ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock 0 <nil>}] <nil>} module=grpc
INFO[2020-07-20T09:44:04.319162407+08:00] ClientConn switching balancer to "pick_first" module=grpc
WARN[2020-07-20T09:44:04.324095041+08:00] Usage of loopback devices is strongly discouraged for production use. Please use `--storage-opt dm.thinpooldev` or use `man dockerd` to refer to dm.thinpooldev section. storage-driver=devicemapper
INFO[2020-07-20T09:44:04.537821177+08:00] Creating filesystem xfs on device docker-253:1-204612859-base, mkfs args: [-m crc=0,finobt=0 /dev/mapper/docker-253:1-204612859-base] storage-driver=devicemapper
INFO[2020-07-20T09:44:04.541272206+08:00] Error while creating filesystem xfs on device docker-253:1-204612859-base: exit status 1 storage-driver=devicemapper
ERRO[2020-07-20T09:44:04.541294622+08:00] [graphdriver] prior storage driver devicemapper failed: exit status 1
failed to start daemon: error initializing graphdriver: exit status 1
这下好了,出错原因比较明确了:
Error while creating filesystem xfs on device docker-253:1-204612859-base: exit status 1 storage-driver=devicemapper
根据这个信息google了一把,可能是因为XFS文件系统管理工具的版本太低,使用如下命令升级:
[BI@localhost ~]$ sudo yum update xfsprogs -y
重启操作系统,然后发现世界是如此美好:
[BI@localhost ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES