如何在 Debian 12、11 或 10 上安装 Docker

Docker 因其能够通过容器化应用程序简化部署过程、确保跨多个环境的一致性而迅速流行起来。其轻量级特性和高效扩展能力使其成为开发人员和 IT 专业人士的最爱。

  • 可移植性:Docker 容器可以在任何支持 Docker 的系统上运行,确保您的应用程序在不同环境中无缝运行。
  • 隔离:每个容器独立运行,降低了冲突的风险,并且更容易管理依赖关系。
  • 效率:容器共享主机操作系统内核,这使得它们比传统虚拟机更高效。
  • 可扩展性:Docker 允许轻松扩展应用程序,通过添加或删除容器来适应不同的负载。
  • 版本控制:轻松跟踪更改并回滚到以前的版本,增强开发和部署工作流程。

Debian 是与 Docker 配对的首选,原因如下:

  • 稳定:Debian 以其强大和可靠的特性而闻名,为 Docker 容器提供了稳定的基础。
  • 安全:定期更新和对安全性的高度关注使 Debian 成为部署应用程序的安全环境。
  • 社区支持:庞大而活跃的社区提供了广泛的文档和支持,使故障排除变得更加容易。
  • 表现:轻量而高效,Debian 可确保 Docker 容器以最小的开销顺利运行。

介绍完毕,让我们探索如何在 Debian 上安装 Docker,利用终端命令和各种方法高效地启动和运行您的环境。

Docker 安装前步骤

在 Debian 系统上安装 Docker CE 既简单又细致。在深入研究安装过程之前,让我们先为无错误执行做好准备。

步骤 1:删除以前的 Docker 实例

笔记: 如果您没有从 Debian 存储库安装默认版本的 Docker,请跳过删除步骤。

首先,我们必须清除所有预先存在的 Docker 安装,以确保环境无冲突。以前的 Docker 版本可能会干扰我们即将进行的安装并导致意外错误。使用以下命令卸载较旧的 Docker 迭代(如果存在):

sudo apt remove docker docker-engine docker.io containerd runc

如果没有较旧的 Docker 实例可以删除, apt 包管理器将返回一条消息,表明没有什么可卸载的。

需要记住的是,卸载 Docker 不会自动删除通常存储在 /var/lib/docker/。如果您打算重新开始并删除所有与 Docker 相关的数据,请使用以下命令:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

这样,您就清除了任何可能影响安装过程的潜在 Docker 残留物。

第 2 步:在安装 Docker 之前更新 Debian 软件包

删除旧版 Docker 后,下一步是确保您的 Debian 系统已完全更新。更新可提高系统稳定性并确保您的系统软件包处于最新版本,从而最大限度地减少潜在的冲突和漏洞。

要更新可用包列表并升级已安装的包,请运行以下命令:

sudo apt update && sudo apt upgrade

此命令将首先刷新可用包列表(apt update),然后升级所有过时的软件包(apt upgrade).

导入 Docker CE APT 存储库

要成功安装 Docker CE,必须配置您的 Debian 系统以访问 Docker 存储库。这涉及将 Docker 存储库集成到您的系统中并导入相应的 GPG 密钥。这些步骤可确保下载的 Docker 软件包的真实性并降低未经授权的更改风险。

步骤 1:安装 Docker CE 的初始软件包

最初,系统可能缺少此过程所需的软件包。让我们通过安装它们来纠正这个问题。执行以下命令来安装这些关键软件包:

sudo apt install ca-certificates curl gnupg lsb-release dirmngr software-properties-common apt-transport-https

在这里,你正在利用 apt 包管理器安装各种工具,如 ca-certificates 对于证书验证, curl 传输数据, gnupg 用于密钥管理,以及此过程所需的其他内容。

第 2 步:添加 Docker CE GPG 密钥

安装所需的软件包后,让我们导入 Docker GPG 密钥。此密钥使您的系统能够验证从 Docker 存储库下载的软件包的完整性。

使用以下命令下载并保存 GPG 密钥:

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

curl 命令从 Docker 存储库获取 GPG 密钥,然后由 gpg --dearmor 将其转换为二进制格式 apt 需要。

步骤 3:添加 Docker CE APT 存储库

有了 GPG 密钥后,您现在可以导入 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

这个看起来很复杂的命令将 Docker 存储库添加到系统的源列表中,并将其链接到之前下载的 GPG 密钥。此链接验证从 Docker 存储库下载的软件包的完整性,从而保证系统的安全。

完成 Docker 安装

本节概述了在 Debian 系统上安装 Docker CE 的必要步骤。您将学习如何更新系统的存储库信息、安装 Docker 以及通过执行测试 Docker 映像来验证安装。此外,本节还包括一项重要的安全实践,以确保安全处理 Docker 容器和映像。

步骤 1:导入 Docker CE 存储库后更新 Debian APT 缓存

在启动 Docker 安装之前,确保系统的存储库信息是最新的,尤其是最近添加的 Docker 存储库。要更新存储库信息,请执行以下命令:

sudo apt update

此命令将刷新系统的软件包列表,包括有关软件包及其依赖项的最新版本的详细信息。

第 2 步:通过 APT 命令安装 Docker

更新系统的存储库信息后,您可以继续安装 Docker。以下是安装 Docker 的命令以及一些可增强您的 Docker 体验的其他插件:

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

在此命令中,您正在安装 docker-ce (Docker 社区版), docker-ce-cli (Docker 命令行界面), containerd.io (行业标准运行时)以及两个用于构建映像和管理多容器应用程序的有用的 Docker 插件。

步骤 3:验证 Debian 上的 Docker CE 安装

完成 Docker 安装后,通过运行测试 Docker 映像来谨慎验证其是否正确安装:

sudo docker run hello-world

此命令拉取 hello-world 从 Docker 存储库中获取镜像,从该镜像创建一个新容器,并运行该容器。执行时,它会打印一条欢迎消息,从而确认 Docker 正在按预期运行。

步骤 4:以非 root 用户身份运行 Docker

出于安全原因,请将 Docker 配置为以非 root 用户身份运行。此做法可保护您的系统免受可能造成损害的意外或恶意更改。后面的部分将更详细地讨论这方面。

Docker 故障排除提示

在与 Docker 容器和镜像交互时,如果遇到任何问题,系统重启可能会帮助解决这些问题,尤其是与路径生成相关的问题。要重新启动系统,请使用以下命令:

reboot

通过 Systemd 管理 Docker

本部分将探讨如何使用 systemd 操作 Docker 服务。Systemd 是许多 Linux 发行版(包括 Debian)的基本组件,提供管理系统进程和服务的功能。由于 Docker 在您的 Debian 系统上安装了一个 systemd 单元,因此这提供了一种管理 Docker 服务的有效方法。

通过 systemd 启动 Docker 服务

要使用 Docker,该服务必须在您的 Debian 系统上积极运行。Systemd 通过以下命令实现此目的:

systemctl start docker.service

此命令启动Docker服务并将其配置为在系统启动时自动启动,确保每次启动后可用。

通过 systemd 停止 Docker 服务

在某些情况下,您可能想要停止 Docker 服务。Systemd 提供了一个简单的命令来实现此目的:

systemctl stop docker.service

此命令将暂停 Docker 服务并阻止其在下次系统启动时自动启动。

通过 systemd 重新启动 Docker 服务

有时您可能想要重新启动 Docker 服务,尤其是在排除与 Docker 相关的问题时。Systemd 提供了使用以下命令重新启动 Docker 服务的功能:

systemctl restart docker.service

此命令停止并启动 Docker 服务,有效应用最新的配置。

通过 systemd 检查 Docker 服务状态

要检查 Docker 服务的运行状态(无论它是正在运行、已停止还是处于非活动状态),可以使用以下 systemd 命令:

systemctl status docker.service

该命令获取并显示 Docker 服务的当前状态,提供对其运行状况的了解。

通过 systemd 在 Debian 系统启动时启用 Docker 服务

如果您希望 Docker 服务在系统启动时自动启动,则通过 systemd 启用它是首选方法:

systemctl enable docker.service

此命令调整 Docker 服务设置以在每次系统启动时自动启动,从而提供 Docker 功能的持续可用性。

通过 systemd 在系统启动时禁用 Docker 服务

如果您决定不在系统启动期间自动启动 Docker 服务,systemd 可以使用以下命令来满足此请求:

systemctl disable docker.service

此命令改变 Docker 服务设置,防止其在系统启动时自动启动。

利用 systemd 命令,您可以有效地管理 Debian 系统上的 Docker 服务,从而对 Docker 的操作行为进行高度控制。以下部分将深入介绍有关使用和管理 Docker 容器和镜像的更多细节。

如何配置 Docker 的示例

在本指南部分中,我们将深入介绍如何设置 Docker 配置。这包括以非 root 用户身份管理 Docker(以增强安全性)以及更改默认日志记录驱动程序以更好地满足您的需求。

步骤 1:以非 root 用户身份运行 Docker

虽然您可以以 root 用户身份运行 Docker,但不建议这样做,因为存在潜在的安全风险,并且可能会意外修改您的 Debian 主机系统。相反,请在非 root 用户帐户下管理 Docker 操作以增强安全性。

要创建专门用于 Docker 管理的新用户,请执行以下命令:

sudo useradd -m dockeruser
sudo usermod -aG docker dockeruser

这些命令创建一个名为“dockeruser”的新用户并将该用户附加到 Docker 组。成为 Docker 组的成员将授予用户运行 Docker 命令所需的权限。

如果您希望将当前用户分配给 Docker 组,请将“dockeruser”替换为您的用户名。例如,对于名为“joshua”的用户,命令如下:

sudo usermod -aG docker joshua

完成这些更改后,请注销并重新登录以应用修改。有时,您可能需要重新启动系统才能传播这些更改。

要确认用户有权运行 Docker 命令,请使用以下命令:

docker ps

该命令应显示正在运行的 Docker 容器列表,表示安装成功。

步骤 2:修改默认 Docker 日志驱动程序

默认情况下,Docker 以 JSON 文件格式记录事件。尽管如此,Docker 的灵活性允许您将默认日志记录驱动程序更改为其他格式,甚至将其配置为将日志转发到远程日志管理系统。

要修改默认日志记录驱动程序,您需要创建一个名为 daemon.json 在里面 /etc/docker/ 目录。利用文本编辑器(例如 nano)执行以下命令:

sudo nano /etc/docker/daemon.json

打开文件后,将以下内容粘贴到其中:

{
  "log-driver": "syslog",
  "log-opts": {
    "syslog-address": "tcp://logs.example.com:514",
    "syslog-facility": "daemon",
    "tag": "{{.Name}}"
  }
}

Docker 在此配置中使用 syslog 驱动程序,并将日志中继到远程 syslog 服务器。将 logs.example.com 替换为您的 syslog 服务器的地址。

配置完成后,使用以下命令重新启动 Docker 守护程序以应用新的日志驱动程序设置:

sudo systemctl restart docker.service

请记住对 daemon.json 文件需要重新启动 Docker 守护进程才能应用更改。

Docker 命令示例

在本部分中,我们将深入研究 Docker 命令的使用,这些命令在有效管理 Docker 容器、镜像、网络和卷方面发挥着至关重要的作用。 docker 命令提供了强大而多功能的工具集,旨在简化和自动化 Docker 环境中的任务。

Docker 命令基础知识

熟悉 Docker 命令行界面 (CLI) 对于掌握 Docker 至关重要。以下是您在 Docker 旅程中经常遇到的一些命令:

  • docker run:从图像启动新容器。
  • docker ps:显示所有当前正在运行的容器。
  • docker images:列出所有本地可用的图像。
  • docker build:从 Dockerfile 构造新镜像。
  • docker stop:暂停当前正在运行的容器。
  • docker rm:消除一个容器。
  • docker rmi:删除图像。
  • docker network:管理 Docker 网络。
  • docker volume:管理Docker 卷。

每个命令都有一组独特的选项,允许您修改其行为以满足您的需求。让我们探索每个命令及其各自的选项。

docker 运行 命令

docker run 命令从指定镜像创建新容器。例如,要从 Debian 镜像启动容器并在其中打开交互式 shell,请使用以下命令:

docker run -it debian:latest /bin/bash

docker ps 命令

docker ps 命令用于列出所有当前活动的容器。它揭示了有关每个容器的宝贵信息,包括容器 ID、关联映像和运行状态。要获取所有正在运行的容器的列表,只需输入:

docker ps

docker 镜像 命令

docker images 命令的任务是列出所有本地可用的 Docker 镜像。它返回有关每个镜像的信息,包括其 ID、关联的存储库和标签:

docker images

docker build 命令

docker build 命令用于从 Dockerfile 创建新的 Docker 镜像。Dockerfile 本质上是一个包含构建 Docker 镜像指令的脚本。例如,要使用当前目录中的 Dockerfile 构建名为“myimage”的新镜像,您可以使用以下命令:

docker build -t myimage:latest .

docker stop 命令

docker stop 命令可正常终止正在运行的 Docker 容器。您可以使用其 ID 来定位所需的容器。例如,要停止 ID 为“abcdefg”的容器,您可以使用:

docker stop abcdefg

docker rm 命令

使用 docker rm 命令来删除 Docker 容器。例如 stop 命令中,指定要删除的容器的容器 ID。例如:

docker rm abcdefg

docker rmi 命令

使用 docker rmi 命令删除 Docker 镜像。通过其 ID 识别要删除的镜像。例如:

docker rmi 1234567

docker 网络 命令

docker network 命令是一个用于创建、列出和删除 Docker 网络的多功能工具。例如,要创建一个名为“mynetwork”的新网络,您可以使用:

docker network create mynetwork

docker 卷 命令

最后, docker volume 命令提供管理 Docker 卷的功能。例如,要创建一个名为“myvolume”的新卷,您可以使用:

docker volume create myvolume

浏览 Docker 容器管理

有效地管理 Docker 容器会显著影响 Docker 环境的功能和寿命。docker 命令提供了各种用于操作 Docker 容器的重要子命令。这些子命令有助于创建、操作、修改和删除容器。无论您是经验丰富的开发人员还是容器化初学者,了解这些命令都可以大大增强您的 Docker 交互能力。

Docker 容器管理的核心命令

命令 docker ps 是 Docker 工具包中用于枚举所有正在运行的容器的必备工具。通过执行此命令,您可以查看所有活动容器、其对应的映像、状态和唯一容器 ID。

docker ps

要终止当前活动的 Docker 容器, docker stop 命令已部署。您附加要停止的容器的唯一 ID 或名称。

docker stop abcdefg

docker rm 命令用于根除 Docker 容器。此命令与 docker stop,接受容器的唯一 ID 或名称作为参数。

docker rm abcdefg

需要注意的是,删除容器会丢弃所做的任何修改。您必须使用“docker commit”命令从修改后的容器创建新映像才能保留更改。

使用 docker commit 保留容器更改

使用 Docker 容器时,您可能需要自定义容器并将这些更改保存为新映像。这可以使用 docker commit 命令。

使用基础镜像启动新容器,并在该容器内进行必要的更改。例如,考虑从 Debian 镜像启动新容器并在容器内打开 shell:

docker run -it --name mycontainer debian:latest /bin/bash

您可以在此新容器中执行各种任务,例如修改配置文件或安装新软件。进行所需的更改后,使用 docker commit 命令生成一个封装这些更改的新映像。要使用“mycontainer”容器中所做的更改创建一个名为“myimage”的新映像,请执行以下命令:

docker commit mycontainer myimage:latest

您现在拥有一个名为“myimage”的镜像,其中包含在“mycontainer”容器中所做的更改。使用此新镜像可以生成和操作具有更新配置或软件的新容器。

请记住,docker commit 命令仅保存对容器文件系统所做的修改,而不会保留对网络和存储的更改。如果需要保留对网络和存储的更改,请考虑使用其他 Docker 命令,例如 docker network 和 docker volume。

包起来

在整个讨论过程中,我们深入探讨了在 Debian Linux 发行版上安装和管理 Docker Community Edition (CE)。Docker CE 带来了容器化的所有好处,允许开发人员在不同环境中构建、发布和运行分布式应用程序。本文讨论的 Docker 命令和用例提供了管理 Docker 容器的基础知识。虽然本文涉及了基本的 Docker 命令,例如 docker run, docker ps, docker rm, 和别的。

请记住,Docker 生态系统更加广泛,拥有众多命令和选项可供您探索,以微调您的 Docker 体验。

Joshua James
跟我来
Joshua James 的最新帖子 (查看全部)

发表评论