snap 安装的docker不能用systemctl命令来管理服务启动和停止、重启
我懂你遇到的情况了——你用 snap 安装的 Docker,结果系统里找不到 systemctl 命令,没法像普通 apt/yum 安装的 Docker 那样用 systemctl start docker 来启动服务。
这其实不是 Docker 本身的问题,而是 snap 安装方式 和 systemctl 管理方式 的机制不一样。
1. 为什么 snap 安装的 Docker 没有 systemctl
- systemctl 是 systemd 提供的服务管理命令,用于管理
/etc/systemd/system/或/lib/systemd/system/下的系统服务。 - snap 包 是一个沙箱化的应用分发格式,它会自带运行所需的依赖,不会像 apt 安装那样往
/etc/systemd/system/注册 systemd 服务。 - 所以用 snap 装的 Docker,默认不会生成
docker.service,自然也就不能用systemctl来启动/停止。
2. snap 安装的 Docker 怎么启动
snap 应用有自己的启动方式:
① 查看 Docker snap 服务状态
snap services docker可能会看到类似:
Service Startup Current
docker.dockerd enabled active② 启动/停止/重启 Docker(snap 方式)
sudo snap start docker
sudo snap stop docker
sudo snap restart docker③ 设置开机自启
sudo snap enable docker④ 关闭开机自启
sudo snap disable docker3. 如果想继续用 systemctl 管理 Docker
那就不要用 snap 安装,而是用官方 apt 仓库安装 Docker:
# 卸载 snap 版 Docker
sudo snap remove docker
# 更新 apt 索引
sudo apt update
# 安装依赖
sudo apt install ca-certificates curl gnupg
# 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 添加 Docker apt 仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 用 systemctl 启动并开机自启
sudo systemctl enable --now docker
# 验证
docker --version
sudo docker run hello-world这样安装的 Docker 就会有 /lib/systemd/system/docker.service,可以正常用:
sudo systemctl start docker
sudo systemctl stop docker
sudo systemctl restart docker4. 总结
- snap 安装 Docker:轻量、隔离,但不走 systemd,所以没有
systemctl管理命令,要用snap start/stop/restart docker。 - apt 安装 Docker:会注册 systemd 服务,能继续用
systemctl管理。 - 如果你习惯用
systemctl,建议换回 apt 安装;如果只是临时用 Docker,保留 snap 版也行,只是启动方式不一样。
如果你愿意,我可以帮你一步步把 snap 版 Docker 换成 apt 版,并顺手帮你配置好 Docker 免 sudo 运行,这样以后就可以直接用 docker run ... 而不用加 sudo。
要帮你换成 apt 版吗?这样就能用 systemctl 了。
版权属于:Joyber
本文链接:https://blog.qqvbc.com/default/1359.html
转载时须注明出处及本声明