我犯了通过 Snap 安装 Docker 的错误……当我意识到 Snap 没有权限在我的工作目录(在不同的分区上)运行时,我将其删除。现在我通过 apt-get 安装 docker 后无法使用它。
请帮忙。
我已经完成了
sudo snap remove docker
,但是当我sudo apt install docker
并通过docker
运行时,我得到了bash: /snap/bin/docker: No such file or directory
我也有同样的问题。这对我有用。
sudo snap remove docker
sudo reboot
重点是重新启动实例或终端。
希望这个方法可以帮到你
您正在寻找的命令是:
sudo apt install docker.io
即它是
docker.io
而不仅仅是docker
在 Ubuntu 上,软件包
docker
被描述为“KDE3/GNOME2 应用程序的系统托盘”,这可能不是您想要的!
我做了同样的事情,只需重新启动实例即可修复它。
我也有同样的问题。 snap 安装限制权限,请参阅 https://snapcraft.io/install/docker/ubuntu 第一个要点 - 可能是出于良好的安全原因,因为 docker 可以提供无限的 root 权限...)。
首先,
sudo snap remove docker --purge
摆脱它。 (摘自@jorgeca 的评论)。
其次,按照官方安装指南
### remove any previously installed docker remnants
sudo apt-get remove docker docker-engine docker.io containerd runc
### install ca-certificates
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg
### install docker certs
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
### setup docker repo
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
### install docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
### test installation
sudo docker run hello-world
我还执行了以下操作 - 测试安装绑定不在 $HOME 中的卷。快速安装 docker 时会出错,提示文件系统是只读的。
sudo mkdir /test
sudo docker run -v /test:/test hello-world
sudo rmdir /test
问题很简单,您的
bash
shell 会缓存已知可执行文件的位置,以避免每次键入命令时都必须扫描可执行文件搜索路径(即 $PATH
中列出的目录)。由于您已从一个目录 (/snap/bin
) 中删除可执行文件并将其添加到另一目录 (/usr/bin
),因此此缓存现已过时。这意味着,如果您尝试仅通过键入 docker
而不是其完整路径来调用可执行文件,它将查找错误的位置。
只需启动一个新的
bash
shell 即可修复它,例如打开一个新的终端窗口并在其中键入命令。
或者,如果您希望刷新已使用的终端会话中的缓存,请键入:
hash -r
无需重新启动计算机(尽管这也可以)。
只需使用
sudo snap remove docker
@Dave,小心使用
sudo apt install [dependency]
;这样做会将依赖项标记为手动安装,这是您不希望看到的。
我没有足够的声誉来发表评论(抱歉!)。