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

Moresweet猫甜 2024-10-02 10:37:01 阅读 61

在这里插入图片描述

文章目录

Failed to enable unit: Unit file docker.service does not exist.1. 问题原因2. 解决方法3. snapd与systemd

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

1. 问题原因

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

systemctl restart docker.service

systemd并不能找到守护进程docker.service

同时使用docker命令时还会产生若干连接的权限问题

在这里插入图片描述

笔者环境:

OS:Ubuntu20.04 LTS

软件安装途径:snap

2. 解决方法

对于<code>snapd安装的软件,我们需要使用snap命令

sudo snap disable docker

sudo snap enable docker

sudo snap restart docker

在这里插入图片描述

为了使<code>docker可以有更高的权限,避免很多不必要的麻烦,我们可以手动将docker以用户的形式启动

# 添加用户组

sudo addgroup --system docker

在这里插入图片描述

<code>sudo adduser $USER docker

在这里插入图片描述

<code>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直接管理

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。