【日常问题】Failed to enable unit: Unit file docker.service does not exist.

在这里插入图片描述

Failed to enable unit: Unit file docker.service does not exist.

1. 问题原因

笔者问题的产生是因为在ubuntu20.04下采用snapd安装的docker,因此

systemctl restart docker.service

systemd并不能找到守护进程docker.service
同时使用docker命令时还会产生若干连接的权限问题
在这里插入图片描述笔者环境:
OS:Ubuntu20.04 LTS
软件安装途径:snap

2. 解决方法

  1. 对于snapd安装的软件,我们需要使用snap命令
sudo snap disable docker
sudo snap enable docker
sudo snap restart docker

【日常问题】Failed to enable unit: Unit file docker.service does not exist._第1张图片

  1. 为了使docker可以有更高的权限,避免很多不必要的麻烦,我们可以手动将docker以用户的形式启动
# 添加用户组
sudo addgroup --system docker

在这里插入图片描述

sudo adduser $USER docker

在这里插入图片描述

newgrp docker
sudo snap disable docker
sudo snap enable docker

使用 Docker 运行容器(和应用程序)意味着运行 Docker 守护进程。root除非您选择 无root模式,否则此守护程序需要特权,因此您应该了解一些重要的细节。

首先,只有受信任的用户才有权控制您的 Docker 守护进程。这是一些强大的 Docker 功能的直接结果。具体来说,Docker 允许您在 Docker 主机和来宾容器之间共享目录;它允许您在不限制容器访问权限的情况下执行此操作。这意味着你可以启动一个容器,其中的/host目录就是/你主机上的目录;并且容器可以不受任何限制地更改主机文件系统。这类似于虚拟化系统允许文件系统资源共享的方式。没有什么可以阻止您与虚拟机共享根文件系统(甚至根块设备)。

3. snapd与systemd

snap 是 Canonical 为使用 Linux 内核和 systemd init 系统的操作系统开发的软件打包和部署系统。这些被称为 snap 的软件包和使用它们的工具 snapd 可以在一系列的 Linux 发行版中使用,并允许上游软件开发者直接向用户发布他们的应用程序。
Snap 管理自己的服务,无需手动干预。但是,经验丰富的管理员可能希望与 snap 的服务进行交互,以帮助改进其与本地环境的集成。因此,snapd 提供了一组命令来允许检查 snap 的服务并更改其状态。
在这里插入图片描述
snap对于守护进程的命令
守护程序 (管理服务):

command function
services 查询服务状态
start 启动服务
stop 停止服务
restart 重启服务
logs 检索服务日志
disable 禁用系统中的一个 snap
enable 在系统中启用一个 snap

snap也归systemd托管,也即是systemd是更底层的守护程序管理,只是snap安装的软件便捷的由snap直接管理
【日常问题】Failed to enable unit: Unit file docker.service does not exist._第2张图片

你可能感兴趣的:(日常问题,docker,eureka,容器)