【问题标题】:Unable to start Docker service with error "Failed to start docker.service: Unit not found."无法启动 Docker 服务并出现错误“无法启动 docker.service:未找到单元。”
【发布时间】:2017-04-23 10:10:22
【问题描述】:

我已经用yum install docker安装了Docker:

$ uname -a
Linux caspgval4 3.10.0-229.20.1.el7.x86_64 #1 SMP Wed Nov 4 10:08:36 CST 2015 x86_64 x86_64 x86_64 GNU/Linux

$ docker --version
Docker version 1.12.6, build 3a094bd/1.12.6

$ docker info
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: http://docs.docker.com

我正在尝试安装和运行 Docker,但它给出了如下错误:

$ sudo service docker start
Redirecting to /bin/systemctl start  docker.service
Failed to start docker.service: Unit not found.

我该如何解决这个问题?我尝试了以下命令,但没有运气:

$ sudo systemctl start docker
Failed to start docker.service: Unit not found.

额外信息:

$ journalctl -u docker
No journal files were found.
-- No entries --

$ cat /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=rhel-push-plugin.socket
Requires=docker-cleanup.timer

[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --authorization-plugin=rhel-push-plugin \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave

[Install]
WantedBy=multi-user.target

我尝试了以下方法:

$ sudo systemctl daemon-reload
$ sudo systemctl start docker
Failed to start docker.service: Unit not found.
$ sudo journalctl -u docker
-- No entries --

更多调试信息:

$ sudo systemctl status network.target
● network.target - Network
   Loaded: loaded (/usr/lib/systemd/system/network.target; static; vendor preset: disabled)
   Active: active since Mon 2017-01-23 02:54:39 PST; 2 months 29 days ago
     Docs: man:systemd.special(7)
           http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget

Jan 23 02:54:39 mymachine systemd[1]: Starting Network.
Jan 23 02:54:39 mymachine systemd[1]: Reached target Network.

$ sudo systemctl status docker-storage-setup.service
● docker-storage-setup.service - Docker Storage Setup
   Loaded: loaded (/usr/lib/systemd/system/docker-storage-setup.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

$ sudo systemctl status rhel-push-plugin.socket
Unit rhel-push-plugin.socket could not be found.

$ sudo systemctl status docker-cleanup.timer
● docker-cleanup.timer - Run docker-cleanup every hour
   Loaded: loaded (/usr/lib/systemd/system/docker-cleanup.timer; disabled; vendor preset: disabled)
   Active: inactive (dead)

【问题讨论】:

  • 你跑sudo systemctl daemon-reload了吗?如果没有,请重试sudo systemctl start docker 和sudo journalctl -u docker,如果有任何错误。
  • 在问题中尝试并更新了相同的内容。
  • 使用sudo systemctl status $x 检查其他依赖单元的network.target、docker-storage-setup.service、rhel-push-plugin.socket 和docker-cleanup.timer。
  • 更新了上述问题中的详细信息。
  • 如果你有任何机会安装docker-latest 那会是什么阻止了我。

标签: docker docker-machine


【解决方案1】:

如果有人使用 snap 安装了 docker,他们可以使用启动服务

sudo snap status docker #check the status
sudo snap start docker # start the service

【讨论】:

  • 这应该是公认的答案。谢谢阿玛吉特!
  • 对于它说的第一个命令 - 错误:未知命令“状态”,请参阅“快照帮助”。
  • 此命令在 ubuntu 20 LTS 中有效: sudo snap start docker # 启动服务
【解决方案2】:

您似乎缺少 rhel-push-plugin.socket 单元,它可能是 rhel-push-plugin 包的一部分。您可以尝试修复该安装,或者您可以直接从 Docker 安装上游 Docker 包,以 root 身份使用以下内容:

curl -sSL https://get.docker.com/ | sh

或者更恰当地遵循CentOS install guide from Docker。 (当您拥有受支持的版本时,CentOS 安装往往可以在 RHEL 系统上运行,直到最近的 20.10 版本才包括 CentOS 8 或 RHEL 8。)

上游 Docker 安装将是更新版本的 Docker,但不会像 rhel-push-plugin 那样进行各种 RHEL 修改。

【讨论】:

  • 这对我有用
【解决方案3】:

运行此命令列出所有服务:

sudo systemctl list-units --type=service

查找正确的 Docker 服务名称(在我的例子中是 snap.docker.dockerd.service)然后运行:

sudo systemctl restart snap.docker.dockerd.service

【讨论】:

  • 我不知道为什么这个解决方案的评分很低。为我工作。干杯
  • 为我工作!我的只是被称为docker 而不是dockerd(我最初尝试的)
【解决方案4】:

如果你的操作系统是 Ubuntu,使用以下命令会成功安装 Docker:

apt install docker.io

【讨论】:

  • 使用此命令安装,但 docker.service 仍未运行。
【解决方案5】:

如果您使用 snap 安装了 docker,您可以像这样检查守护进程的状态:

sudo snap services docker

如果current 列显示inactive,则它没有运行。尝试从这个开始:

sudo snap start docker

再次检查服务,如果之后仍然没有运行,您可以查看日志:

sudo snap logs docker

这可能会提供更多关于阻止它运行的提示

对我来说,我有一个错误说 docker 无法在 /etc/docker/ 中创建符号链接,因为另一个文件在路上。由于 docker snap 中的一个已知错误,清空目录是不够的。解决方法是删除目录然后刷新快照(请参阅https://forum.snapcraft.io/t/layouts-still-brittle-when-refreshing-snaps/26252/2)

sudo rm -rf /etc/docker
sudo snap refresh

【讨论】:

    【解决方案6】:

    https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html

    注意

    在某些情况下,您可能需要重新启动您的实例,以便为 ec2-user 提供访问 Docker 守护程序的权限。如果您看到以下错误,请尝试重新启动您的实例:

    【讨论】:

      【解决方案7】:

      尝试以 root 身份安装 Docker (sudo):

      sudo yum install docker
      

      见Installation on Red Hat Enterprise Linux。

      【讨论】:

      • 它是用root安装的。
      猜你喜欢
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 2019-08-20
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多