在安装Docker Engine之前,需要卸载已经安装的可能有冲突的软件包。一些维护者在他们的仓库提供的Docker包可能是非Docker官方发行版,须先卸载这些软件包,然后才能安装Docker官方正式发行的Docker Engine版本。
要卸载的软件包包括:
docker.io
docker-compose
docker-doc
podman-docker
此外,Docker Engine依赖于containerd
和runc
。Docker Engine将这些依赖捆绑为一个bundle:containerd.io
。如果之前有安装了containerd
或runc
,请卸载它们以避免与Docker Engine捆绑的版本产生冲突。
运行以下命令卸载所有冲突的软件包:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
apt-get
可能会报告没有安装某些软件包。
存储在/var/lib/docker/
中的映像、容器、卷和网络不会在卸载Docker时自动删除。如果你想开始一个纯净的安装,想要清理任何现有的数据,请阅读卸载Docker Engine部分。
在新主机上首次安装Docker Engine之前, 需要设置Docker的 apt
仓库。之后就可以从apt仓库安装和更新Docker 。
# 添加 Docker 官方 GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 将仓库添加到 apt源:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
注意
如果你使用一个Linux衍生发行版,比如Kali Linux, 可能需要替换此命令中预期打印的版本代号:
(. /etc/os-release && echo "$VERSION_CODENAME")
将此部分替换为相应Debian发行版的代号, 例如bookworm
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装特定版本:
# 列出可用版本:
apt-cache madison docker-ce | awk '{ print $3 }'
5:24.0.0-1~debian.11~bullseye
5:23.0.6-1~debian.11~bullseye
...
从仓库中列出的可用版本中选择。
sudo docker run hello-world
这个命令下载一个测试映像并在容器中运行它。当容器运行时,它会打印一条确认消息并退出。
现在已经成功安装并启动了Docker Engine。
如果不能使用Docker的apt仓库来安装Docker Engine,可以下载你需要的版本的deb文件并手动安装它。你需要每次升级Docker Engine时都要下载一次新文件。
https://download.docker.com/linux/debian/dists/
containerd.io_<version>_<arch>.deb
docker-ce_<version>_<arch>.deb
docker-ce-cli_<version>_<arch>.deb
docker-buildx-plugin_<version>_<arch>.deb
docker-compose-plugin_<version>_<arch>.deb
$ sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
./docker-ce_<version>_<arch>.deb \
./docker-ce-cli_<version>_<arch>.deb \
./docker-buildx-plugin_<version>_<arch>.deb \
./docker-compose-plugin_<version>_<arch>.deb
$ sudo service docker start
$ sudo docker run hello-world
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd