无法启动 Docker 服务,并出现错误"Failed to start docker.service: Unit not found."



我已经使用 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 list-units --type=service

寻找正确的Docker服务名称(在我的情况下是snap.docker.dockerd.service(然后运行:

sudo systemctl restart snap.docker.dockerd.service

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

启动服务
sudo snap status docker #check the status
sudo snap start docker # start the service

看起来您缺少Rhel-Push-Plugin.socket单元,该单元可能是Rhel-Push-Pugin软件包的一部分。您可以尝试修复该安装,也可以直接从Docker安装上游Docker软件包,并以下为根:

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

或更恰当地遵循Docker的CentOS安装指南。(当您拥有支持版本时,CentOS安装甚至在RHEL系统上都倾向于使用,直到最近的20.10版本不包括CentOS 8或RHEL 8。(

上游Docker Install将是Docker的最新版本,但是它将没有Rhel-Push-Plugin等各种RHEL修改。

如果您的操作系统是Ubuntu,请使用以下命令,它将成功安装Docker:

apt install docker.io

如果您已经安装了SNAP的Docker,则可以检查这样的守护程序的状态:

sudo snap services docker

如果current列显示inactive,则它不运行。尝试从此开始:

sudo snap start docker

再次检查服务,如果它仍未运行,则可以检查日志:

sudo snap logs docker

可能会给什么提示,以阻止它无法运行

对我来说,我有一个错误,说docker无法在/etc/docker/中创建符号链接,因为另一个文件在场。由于Docker快照中的已知错误,排空目录还不够。

sudo rm -rf /etc/docker
sudo snap refresh

尝试运行此命令 - sudo apt-get install containerd.io docker-ce

它将安装docker.service

的容器运行时和一些依赖关系

然后尝试运行-sudo systemctl list-units --type=service | grep "docker" 您会看到Docker.Service可用

然后检查状态-sudo service docker status

你很好!

我只需进行以下操作即可解决问题:

$ sudo apt-get purge containerd.io docker-ce
$ rm -rf /var/lib/containerd
[reboot]
$ sudo apt-get install containerd.io docker-ce

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

注意

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

在ubuntu中,以下命令对我有用:

sudo apt install docker.io

尝试将docker安装为root(sudo(:

sudo yum install docker

请参阅Red Hat Enterprise Linux上的安装

相关内容

最新更新