简单来说,Docker 是一个工具,可以让开发人员、系统管理员等轻松地将他们的应用程序打包到一个被称为容器的沙盒中,以在主机操作系统(即 Linux)上运行。 Docker 的主要优点在于它允许用户将应用程序和所有依赖项打包成一个标准化的软件开发单元。与虚拟机不同,容器没有高额开销,因此可以更有效地利用底层系统和资源。
作为服务器玩家和自托管爱好者(而非开发人员),可以将 Docker 理解和使用成一个跑在 Linux 上的第三方 App Store,先在系统上安装好 Docker,然后就可以拉取(下载)各种开发者已经打包好的容器镜像(App),安装/部署到自己的系统上,方便使用和访问。
而 Docker Compose 是用于管理和部署 Docker 容器的额外工具,它使用 YAML 文件储存的 Docker 容器配置,使用相应的命令来创建、启动容器;使用 Docker Compose 可以帮助我们方便的管理多个容器。
这篇文章将帮助大家在 Debian/Ubuntu 系统上安装 Docker 和 Docker Compose。
Docker 版本
面向用户群体,Docker 有两个版本:Docker CE (Community Edition) 和 Docker EE (Enterprise Edition);Docker CE 是免费的社区版本,提供了一些基本的容器管理功能,适用于个人或小型团队。Docker EE 是付费的企业版本,提供了更多的企业级特性和服务支持,适合大型组织和企业使用。
面向使用场景,Docker Engine 是 Docker 的基础组件,它提供了一组 API 和命令行工具,用于构建、运行和管理 Docker 容器;Docker Desktop 是一款集成了 Docker Engine、Docker CLI 和其他工具的桌面应用程序,适用于 Mac 和 Windows 系统。
在本站诸多使用场景中,Docker 一般指 Docker CE 和 Docker Engine,运行在服务器(VPS)下的 Linux 系统。
Debian/Ubuntu 安装 Docker
Docker 支持安装到 Debian 10+,Ubuntu 18.04+ 的系统上,首先通过 SSH 登录到主机,确保当前是 root 用户(可以不加 sudo
跑 root 命令),或者有 root 执行权限(可以加 sudo
跑 root 命令),
更新源和自带软件,安装一些必要的软件包,
apt update
apt upgrade -y
apt install curl wget gnupg apt-transport-https lsb-release ca-certificates dpkg
从 apt 源安装
源亦即 Linux 语境下的软件(包/库)商店,而 apt 是 Debian/Ubuntu 官方的包管理器,可以通过 apt 一键安装 Docker,
注意通过这种方式安装的 Docker 版本是发行版维护者在其软件源(apt)中提供的非官方 Docker 软件包分发,相较于官方一般来说版本比较落后,且只能安装特定版本,
apt install -y docker.io docker-compose
设置 Docker 开启自启动,
systemctl start docker
systemctl enable --now docker
从 Docker 官方源安装
卸载旧版本
如果主机之前有安装过 Docker 的非官方发行版,如 docker.io,docker-compose,docker-compose-v2,docker-doc,podman-docker,或者 containerd / runc 等 Docker 依赖应用,要安装 Docker 的官方版本,需要先卸载,
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
Debian 系统
安装最新版本
添加 Docker 官方的 GPG 密钥,
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
添加 Docker 源到 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
安装 Docker 及其组件,
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装指定版本
在添加好 Docker 源后,使用以下命令列出可用的 Docker 版本,
apt-cache madison docker-ce | awk '{ print $3 }'
输出,
root@ww:~# apt-cache madison docker-ce | awk '{ print $3 }'
5:24.0.7-1~debian.11~bullseye
5:24.0.6-1~debian.11~bullseye
5:24.0.5-1~debian.11~bullseye
5:24.0.4-1~debian.11~bullseye
5:24.0.3-1~debian.11~bullseye
5:24.0.2-1~debian.11~bullseye
5:24.0.1-1~debian.11~bullseye
5:24.0.0-1~debian.11~bullseye
5:23.0.6-1~debian.11~bullseye
5:23.0.5-1~debian.11~bullseye
5:23.0.4-1~debian.11~bullseye
5:23.0.3-1~debian.11~bullseye
5:23.0.2-1~debian.11~bullseye
5:23.0.1-1~debian.11~bullseye
5:23.0.0-1~debian.11~bullseye
5:20.10.24~3-0~debian-bullseye
5:20.10.23~3-0~debian-bullseye
5:20.10.22~3-0~debian-bullseye
5:20.10.21~3-0~debian-bullseye
5:20.10.20~3-0~debian-bullseye
5:20.10.19~3-0~debian-bullseye
5:20.10.18~3-0~debian-bullseye
5:20.10.17~3-0~debian-bullseye
5:20.10.16~3-0~debian-bullseye
5:20.10.15~3-0~debian-bullseye
5:20.10.14~3-0~debian-bullseye
5:20.10.13~3-0~debian-bullseye
5:20.10.12~3-0~debian-bullseye
5:20.10.11~3-0~debian-bullseye
5:20.10.10~3-0~debian-bullseye
5:20.10.9~3-0~debian-bullseye
5:20.10.8~3-0~debian-bullseye
5:20.10.7~3-0~debian-bullseye
5:20.10.6~3-0~debian-bullseye
选择需要安装的版本赋值到 VERSION_STRING
,然后进行安装,
VERSION_STRING=5:24.0.7-1~debian.11~bullseye
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
Ubuntu 系统
安装最新版本
添加 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
sudo apt-get update
然后安装 Docker 及其组件,
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装指定版本
同 Debian 系统安装指定版本。
从 Docker 镜像源安装
如果是中国大陆网络环境,推荐使用 Docker 镜像源,其将 Docker 官方的各种文件托管在大陆服务器,下载比较快速,使用的时候只需要将文件下载地址改为镜像地址即可。
以 Debian 为例,从阿里云镜像源下载 Docker 相关文件,
添加 Docker 官方的 GPG 密钥,
install -m 0755 -d /etc/apt/keyrings
curl -fsSL <https://mirrors.aliyun.com/docker-ce/linux/debian/gpg> | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Docker 官方源
# 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
添加 Docker 源到 apt 源,
echo \\
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] <https://mirrors.aliyun.com/docker-ce/linux/debian> \\
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \\
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker 官方源地址
# 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
然后安装 Docker 及其组件,
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
手动安装
如果无法使用 Docker 的 apt 软件源安装 Docker,则可以手动下载适用于系统发行版的包文件进行安装。每次想要升级 Docker 时,用户都需要下载一个新文件。参加官方文档
使用 Docker 官方一键脚本安装
从 Docker 官网下载脚本到本地并安装 Docker,运行任意一条命令即可,
curl -fsSL <https://get.docker.com> | bash
wget -qO- get.docker.com | bash
curl -fsSL <https://get.docker.com> -o get-docker.sh ; sudo sh get-docker.sh
也可以使用中国大陆镜像地址下载安装,
curl -fsSL <https://get.docker.com> | bash -s docker --mirror Aliyun
curl -fsSL <https://get.docker.com> | bash -s docker --mirror AzureChinaCloud
wget -qO- get.docker.com | bash -s docker --mirror Aliyun
wget -qO- get.docker.com | bash -s docker --mirror AzureChinaCloud
curl -fsSL <https://get.docker.com> -o get-docker.sh ; sudo sh get-docker.sh --mirror Aliyun
curl -fsSL <https://get.docker.com> -o get-docker.sh ; sudo sh get-docker.sh --mirror AzureChinaCloud
设置 Docker 开启自启动,
systemctl enable docker
检查 Docker 是否安装成功
查看 Docker 版本,
docker version
跑一下 hello-world 容器,
docker run hello-world
卸载 Docker
停止所有正在运行的 Docker 容器,
docker stop $(docker ps -aq)
删除所有的 Docker 容器,
docker rm $(docker ps -aq)
卸载 Docker 平台的所有组件,
如果安装的是 apt 源版本,
apt remove docker.io docker-compose
如果安装的是 Docker 官方版本,
apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
删除 Docker 的默认目录和任何剩余的配置文件,
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
rm -rf /etc/docker
删除用户组,
groupdel docker
但是请注意,这不会删除任何用 Docker 创建好的镜像或容器数据。如果要删除这些数据,请使用 sudo rm -rf
命令手动删除相关文件和目录。
Debian/Ubuntu 安装 Docker Compose
Docker Compose 可以作为 Docker 应用的插件,或者作为独立应用安装。请注意,Compose 独立应用使用 -compose
语法而不是当前标准语法的 compose
。 例如,使用 Compose 独立应用时,请键入 docker-compose up
,而不是 docker compose up
。
一般来说在进行安装 Docker 的同时可以连带安装 Docker Compose。
Docker Compose 作为 Docker 插件安装
从 Docker 官方源安装
注意在前面的步骤当中,已经在安装 Docker 的过程中安装好 docker-compose-plugin,
sudo apt-get install docker-compose-plugin
如需升级 Docker Compose,更新下 apt 索引目录,然后安装最新版本,
sudo apt-get update
sudo apt-get install docker-compose-plugin
如需卸载,运行
sudo apt-get remove docker-compose-plugin
手动安装
此种方式可以下载某个特定版本的 Docker Compose 包到本地并安装,详细方式参考官方文档 — Install the Compose plugin | Docker Docs;同样,升级 Docker Compose 的时候也需要下载最新版本到本地进行安装,总的来说不如 apt-get install docker-compose-plugin
方便,Docker 官方也推荐设置 Docker 源进行 apt 安装。卸载时删除包/包所在文件夹即可。
Docker Compose 作为独立应用安装
从 apt 源安装
在使用 apt 源安装 Docker 时可以同时安装好 Docker Compose。
可以使用发行版维护者在其软件源(apt)中提供的非官方 Docker Compose 软件包分发,相较于官方一般来说版本比较落后,且只能安装特定版本,
apt install -y docker-compose
如需卸载,运行,
apt remove docker-compose
并删除 Docker Compose 配置文件和数据,
rm -rf /etc/docker/compose
手动安装
安装 Docker Compose 的官方和指定版本,不同版本介绍和下载链接参加 Releases · docker/compose · GitHub。
下载 Docker Compose 包到 /usr/local/bin/docker-compose,需要指定版本的下载链接,如 https://github.com/docker/compose/releases/download/v2.23.1/docker-compose-linux-x86_64,
curl -SL <https://github.com/docker/compose/releases/download/v2.23.1/docker-compose-linux-x86_64> -o /usr/local/bin/docker-compose
赋予可执行权限,
chmod +x /usr/local/bin/docker-compose
检查 Docker Compose 版本,
docker-compose version
在 Linux 系统中,/usr/local/bin/ 目录是用来存放本地软件安装的可执行文件的标准目录之一。通常该目录包含的程序是由系统管理员或用户自己从源代码编译安装的软件,它们通常不包含在 Linux 发行版的官方软件包中,因此这个目录通常被用来存储系统本地的自定义软件。其他标准目录包括 /usr/bin/ 和 /usr/sbin/ 等。
在某些情况下,系统的本地软件目录不是默认在 /usr/local/bin,而是 /usr/bin,这会导致 Docker Compose 安装失败(docker-compose
命令无法使用),我们可以更改上面的命令目录到 /usr/bin,
curl -SL <https://github.com/docker/compose/releases/download/v2.23.1/docker-compose-linux-x86_64> -o /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
或者也可以在系统路径中创建一个符号链接到 /usr/bin 或任何其他目录,
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
检查 Docker Compose 是否安装成功
可以通过查看 Docker Compose 版本来检查是否安装成功,
作为 Docker 插件安装,
docker compose version
作为独立应用安装,
docker-compose version
卸载 Docker Compose
如果是使用 apt 安装,使用 apt 卸载即可;如果是手动安装,删除 Docker Compose 包和包所在的文件夹。