文章目录

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下采用snapd安装的docker,因此

systemctl restart docker.service

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

2. 解决方法

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

sudo snap disable docker

sudo snap enable docker

sudo snap restart docker

为了使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对于守护进程的命令 守护程序 (管理服务):

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

snap也归systemd托管,也即是systemd是更底层的守护程序管理,只是snap安装的软件便捷的由snap直接管理

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。