本节摘要:装完 Docker 不等于能用。本节给出完整的验证流水线:查服务状态、跑 hello-world、确认开机自启、处理权限报错,每一步都配真实终端会话与失败现场。这是新机器交付时的标准动作,也是后续所有词条的地基。
承接 1.1 的词条卡:上一节你已经会用 version 与 info 提问,这一节处理"提问得到坏消息"之后的整条修复与确认链路。本节过完,环境这个变量就从你的问题清单里划掉了。

$ sudo systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled) Active: active (running) since Thu 2026-09-03 10:12:07 CST; 3 days ago Main PID: 1243 (dockerd)
看三处:Active 必须是 active (running);Loaded 括号里的 enabled 表示开机自启已配置;Main PID 是守护进程的进程号。如果 Active 是 inactive 或 failed,先启动服务:
$ sudo systemctl start docker $ sudo systemctl status docker --no-pager | head -n 3 ● docker.service - Docker Application Container Engine Active: active (running) since Thu 2026-09-03 10:20:11 CST; 5s ago
--no-pager 让输出直接打印不进分页器,脚本里都该带上。
$ sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world c1ec31eb5944: Pull complete Digest: sha256:...(摘要串) Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly.
这五行输出背后跑完了完整链路:本地找不到镜像、去仓库拉取、创建容器、容器执行并打印问候、退出。看到 "Hello from Docker!" 就证明客户端、守护进程、仓库网络三者全部可用。如果卡在 Pulling 不动,多半是网络到镜像仓库不通,属于环境问题而非安装问题。
$ systemctl is-enabled docker enabled
返回 enabled 即可。若是 disabled:
$ sudo systemctl enable docker Created symlink /etc/systemd/system/multi-user.target.wants/docker.service
不加 sudo 直接敲 docker 命令时的典型报错:
$ docker ps permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
修复动作是把当前用户加进 docker 组:
$ sudo usermod -aG docker $USER $ exit
⚠️ 关键一步:必须退出登录再重新进来,组成员身份才生效。改完不重登就测,一定会误以为配置失败。
重新登录后验证:
$ docker run --rm hello-world Hello from Docker!
这次加了 --rm——容器退出后自动删除,验证场景不留垃圾,这个义项在叁部 run 词条里还会展开。
| 症状 | 真实报错片段 | 判断与动作 |
|---|---|---|
| 守护进程未启动 | Cannot connect to the Docker daemon | 回关卡一,systemctl start docker |
| 无权限 | permission denied ... docker.sock | 回关卡四,加组并重登 |
| 网络不通 | Pulling 卡住或 timeout | 检查出口网络与仓库可达性 |
| 服务起不来 | systemctl status 显示 failed | 看 journalctl 的 dockerd 日志定位 |
$ sudo journalctl -u docker --no-pager -n 20 -- Logs begin at Thu 2026-09-03 09:58:12 CST -- Sep 03 10:11:55 host01 dockerd[1243]: time="..." level=info msg="Starting up" Sep 03 10:11:56 host01 dockerd[1243]: time="..." level=info msg="Loading containers: start."
journalctl 的 -u docker 过滤出守护进程日志,-n 20 只看最后二十行,服务启动失败时这里是第一手证据。
环境已验证可用,下一节学习 Docker 自带的帮助体系——它是这本词典之外你随时能打开的另一本词典。