Linux系统最新版Docker安装与配置全流程指南
1. 项目概述:为什么需要一篇“最新版”Docker安装指南?
如果你在Linux上折腾过Docker,大概率遇到过这样的场景:兴冲冲地打开官方文档,照着步骤一路敲命令,结果在某个环节卡住,报错信息看得一头雾水。或者,你从某个博客教程里复制粘贴了一串命令,安装倒是成功了,但版本号一看,还是两三年前的旧版,一些新功能、性能优化和安全补丁都与你无缘。更别提不同Linux发行版(Ubuntu, CentOS, Debian等)的安装命令和依赖库天差地别,一个教程很难通吃。
这就是我写这篇教程的初衷。它不仅仅是一份命令清单,而是一个基于我多年在开发、运维和生产环境中反复实践、踩坑、优化后总结出的“完整工作流”。所谓“完整”,意味着它覆盖了从系统准备、仓库配置、版本选择、安装验证到后续优化和常见问题排查的全过程。而“最新版”,则代表我们摒弃了那些陈旧的、通过curl -sSL https://get.docker.com/ | sh一键脚本(它可能安装非官方仓库的版本),转而采用Docker官方推荐的、通过配置APT或YUM仓库来安装的方式。这种方式不仅能确保你安装的是经过Docker官方测试和签名的、最新的稳定版(Stable)或测试版(Edge),还能让你在未来通过系统的包管理器(apt或yum)无缝、安全地升级Docker。
所以,无论你是刚接触容器技术的开发者,还是需要为团队搭建统一开发环境的运维工程师,甚至是自己在家用Linux服务器上折腾点好玩项目的极客,这篇教程都将为你提供一个可靠、可复现、且面向未来的Docker安装方案。请准备好你的Linux终端,我们这就开始。
2. 核心思路与方案选型:为什么不用一键脚本?
在开始动手之前,我们先花点时间厘清思路。安装Docker,网络上最常见的方法是使用官方提供的一键安装脚本。这个命令看起来非常诱人:curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh。简单、粗暴、似乎能解决所有问题。但作为一名有追求的从业者,我强烈建议你放弃这种方法,原因有三。
第一,缺乏透明度和可控性。当你把sudo权限交给一个从网络下载并直接执行的脚本时,你实际上放弃了对安装过程的控制。这个脚本具体做了什么?它添加了哪些第三方仓库?修改了哪些系统配置?安装了哪些额外的、你可能不需要的包?在出现问题需要回滚或排查时,你会非常被动。而通过手动配置官方仓库的方式,每一步操作都是你自己执行的,清晰可见,易于管理和审计。
第二,版本和来源可能不理想。一键脚本为了追求最大的兼容性,有时会选择某个Linux发行版默认仓库中的Docker版本,或者某个较旧的、广泛测试的版本。这可能导致你无法第一时间用上Docker的最新特性(比如BuildKit的并行构建、cgroup v2支持、更快的容器启动速度等)和重要的安全更新。我们的目标是“最新稳定版”,这就需要直接对接Docker官方的发行版仓库。
第三,不利于后续维护。通过系统包管理器(APT/YUM/DNF)安装的软件,其最大优势在于依赖关系管理和无缝升级。配置好官方仓库后,你未来只需要运行sudo apt update && sudo apt upgrade或sudo yum update,Docker引擎及其相关组件(如Docker Compose)就会随着系统其他软件一起更新到最新版本,安全又省心。而通过脚本或其他方式安装的二进制包,往往需要手动重复安装流程。
因此,本教程选择的方案是:为你的Linux系统添加Docker官方APT/YUM仓库,然后通过系统的包管理器进行安装。这是Docker官方文档首推的、最适合生产环境的方法。接下来,我们将根据不同的主流Linux发行版,详细拆解每一步操作。
3. 系统准备与依赖检查
在添加仓库和安装之前,我们需要确保系统处于一个“干净”且“就绪”的状态。这个步骤常常被忽略,但却是避免后续各种诡异错误的关键。
3.1 清理旧版本Docker
如果你的系统上曾经以任何方式安装过Docker(或它的前身docker.io、docker-engine),第一步就是彻底清除它们。不同版本的Docker文件路径、服务名称可能冲突,残留的配置和镜像数据有时也会引发问题。
对于基于Debian/Ubuntu的系统:
sudo apt-get remove docker docker-engine docker.io containerd runc注意,这条命令可能不会删除镜像、容器、卷和网络配置文件,它们通常保存在/var/lib/docker/目录下。如果你想得到一个完全干净的环境(比如用于测试或排错),可以手动删除这个目录:sudo rm -rf /var/lib/docker。但在生产环境或存有重要数据的开发机上,请务必谨慎操作,删除前做好备份。
对于基于RHEL/CentOS/Fedora的系统:
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine同样,/var/lib/docker目录下的数据需要单独处理。
3.2 安装基础依赖工具
为了能够添加HTTPS仓库并使用apt或yum进行安装,我们需要确保一些基础工具已就位。
Ubuntu/Debian:
sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-releaseca-certificates: 用于验证HTTPS连接的安全性。curl: 用于从网络下载文件(如GPG密钥)。gnupg: GNU隐私卫士,用于管理GPG密钥,验证仓库签名。lsb-release: 一个工具,可以方便地获取LSB(Linux标准基础)和发行版的具体信息,我们常用它来获取系统代号(如focal、jammy)。
CentOS/RHEL/Fedora:对于较新的CentOS 8+/RHEL 8+/Fedora,默认使用dnf包管理器,它已经包含了所需的基本功能。但为了兼容性和确保工具存在,可以安装:
sudo yum install -y yum-utilsyum-utils是一个工具集,其中包含yum-config-manager,这是我们后面添加仓库所必需的工具。
实操心得:很多教程会跳过依赖检查,假设你的系统是“纯净”的。但在实际环境中,特别是云服务器或使用了很久的本地机器,很可能缺少某个小工具。先执行这一步,能避免在添加仓库时遇到“命令未找到”这类低级但令人沮丧的错误。
4. 添加Docker官方软件仓库
这是整个安装过程的核心步骤,也是确保我们能获取到官方最新版软件包的关键。Docker为不同的发行版维护了独立的仓库,我们需要添加正确的仓库地址。
4.1 添加Docker的GPG公钥
软件包管理器(APT/YUM)通过GPG密钥来验证从仓库下载的软件包的完整性和真实性,防止被篡改。我们必须先添加Docker官方的GPG密钥。
通用方法(推荐,适用于大多数系统):
sudo mkdir -p /etc/apt/keyrings # 为Ubuntu/Debian创建密钥环目录,-p确保目录不存在时创建 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg对于CentOS/RHEL,密钥的添加方式略有不同,通常yum会在添加仓库时自动处理密钥,但为了确保一致,也可以手动添加:
sudo rpm --import https://download.docker.com/linux/centos/gpg关键参数解析:
-fsSL: 这是curl命令的一组常用参数。-f:--fail,静默失败,在服务器错误时无输出。-s:--silent,静默模式,不显示进度或错误信息。-S:--show-error,与-s配合,在失败时显示错误。-L:--location,如果请求的页面发生了跳转,curl会自动跟随跳转。
gpg --dearmor: GPG密钥通常以ASCII格式分发,而APT需要二进制格式。--dearmor(或-d)命令就是将ASCII格式的密钥转换为二进制格式。
4.2 配置APT仓库(Ubuntu/Debian)
首先,我们需要确定系统的发行版代号。使用lsb_release -cs命令,它会输出类似focal(Ubuntu 20.04)、jammy(Ubuntu 22.04)或bullseye(Debian 11)的结果。
然后,使用echo命令将仓库配置写入到/etc/apt/sources.list.d/docker.list文件中。这个文件专门用于存放第三方软件的APT源。
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null让我们拆解这行命令:
deb: 表示这是一个二进制软件包仓库(相对于deb-src源代码仓库)。[arch=$(dpkg --print-architecture) signed-by=...]: 这是APT仓库的选项。arch=$(dpkg --print-architecture): 自动获取当前系统的架构(如amd64,arm64),确保下载对应架构的软件包。signed-by=/etc/apt/keyrings/docker.gpg: 指定用于验证此仓库软件包的GPG密钥路径。这是Ubuntu/Debian新版本中更安全的指定方式。
https://download.docker.com/linux/ubuntu: Docker官方为Ubuntu准备的仓库基地址。$(lsb_release -cs): 动态获取你的Ubuntu版本代号。stable: 使用稳定版仓库。如果你想尝试最新功能(但可能不稳定),可以替换为test或nightly。
注意事项:如果你使用的是Debian系统,需要将命令中的
ubuntu替换为debian。例如,对于Debian Bullseye:echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4.3 配置YUM仓库(CentOS/RHEL/Fedora)
对于基于RPM的系统,我们使用yum-config-manager工具来添加仓库。
CentOS/RHEL:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo这条命令会从Docker官方下载一个.repo文件,并将其放置在/etc/yum.repos.d/目录下。你可以用cat /etc/yum.repos.d/docker-ce.repo查看其内容,里面已经包含了稳定版(stable)、测试版(test)和夜间构建版(nightly)的仓库配置。
Fedora:
sudo yum-config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo5. 安装Docker引擎
仓库配置好后,安装就变得非常简单了。首先更新本地软件包索引,然后直接安装docker-ce(社区版)。
5.1 Ubuntu/Debian 安装步骤
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugindocker-ce: Docker社区版引擎,核心组件。docker-ce-cli: Docker命令行工具,你用来执行docker run,docker ps等命令的客户端。containerd.io: 一个行业标准的容器运行时,Docker引擎底层依赖于它来管理容器的生命周期。docker-compose-plugin: 这是Docker Compose的V2版本,它作为一个Docker CLI插件安装,命令是docker compose(注意没有横线)。这是目前官方推荐的方式,比独立安装docker-compose二进制文件更易于管理。
5.2 CentOS/RHEL/Fedora 安装步骤
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin对于CentOS 8+/RHEL 8+,你可能需要使用dnf命令(它是yum的下一代版本):
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin5.3 安装特定版本(可选)
在某些生产环境中,你可能需要锁定一个特定的Docker版本,而不是始终使用最新版。你可以先列出仓库中所有可用的版本,然后选择安装。
Ubuntu/Debian:
# 列出所有可用版本 apt-cache madison docker-ce | awk '{ print $3 }' # 安装指定版本,例如 5:24.0.7-1~ubuntu.22.04~jammy VERSION_STRING=5:24.0.7-1~ubuntu.22.04~jammy sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-compose-pluginCentOS/RHEL/Fedora:
# 列出所有可用版本 yum list docker-ce --showduplicates | sort -r # 安装指定版本,例如 docker-ce-24.0.7 sudo yum install docker-ce-24.0.7 docker-ce-cli-24.0.7 containerd.io docker-compose-plugin6. 安装后配置与验证
安装完成并不意味着万事大吉。为了让Docker正常工作且更符合使用习惯,我们还需要进行一些基础配置。
6.1 启动Docker服务并设置开机自启
Docker是以系统服务(systemd service)的形式运行的。
# 启动Docker服务 sudo systemctl start docker # 设置Docker服务开机自动启动 sudo systemctl enable docker # 查看Docker服务状态,确认其处于 active (running) 状态 sudo systemctl status docker看到绿色的“active (running)”字样,并且没有红色的错误日志,就说明服务启动成功了。你可以按q键退出状态查看。
6.2 验证安装是否成功
运行经典的“Hello World”容器,这是检验Docker安装是否就绪的终极测试。
sudo docker run hello-world如果安装配置正确,你会看到一段来自Docker的欢迎信息,大意是“Hello from Docker! This message shows that your installation appears to be working correctly.”。这个命令会从Docker Hub拉取一个极小的hello-world镜像,并运行一个容器来输出这段信息。
6.3 (强烈推荐)将当前用户加入docker组
默认情况下,执行docker命令需要sudo权限。每次都要输入密码很麻烦,而且有些图形化工具(如VSCode的Docker扩展)也需要权限。更安全方便的做法是将你的用户加入docker用户组。
# 将当前登录用户加入docker组 sudo usermod -aG docker $USER重要提示:执行此命令后,组权限不会立即生效。你需要完全退出当前终端会话,并重新登录,或者新开一个终端窗口,新的组成员身份才会被系统识别。之后,你就可以直接运行docker ps、docker run等命令,而无需在前面加sudo了。
安全警告:
docker组本质上拥有root权限(因为Docker守护进程以root身份运行)。因此,只将你信任的、需要使用Docker的用户添加到该组。在多用户系统上请谨慎操作。
7. 配置镜像加速与守护进程优化
对于国内用户,直接从Docker Hub拉取镜像速度可能很慢。我们可以配置国内镜像加速器。此外,还可以对Docker守护进程进行一些基础优化。
7.1 配置国内镜像加速器
修改或创建Docker守护进程的配置文件/etc/docker/daemon.json。
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ], "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } } EOF这里我添加了三个常用的国内镜像源:中国科技大学、网易和百度。你可以选择一个延迟最低的使用,或者全部保留,Docker会按顺序尝试。
registry-mirrors: 镜像加速器地址列表。log-driver和log-opts: 这部分配置了Docker容器的日志驱动为json-file,并限制了单个日志文件最大100MB,最多保留3个文件,防止容器日志无限增长占满磁盘。
7.2 应用配置并重启Docker
修改配置后,必须重启Docker服务使配置生效。
sudo systemctl daemon-reload # 重新加载systemd守护进程配置 sudo systemctl restart docker # 重启Docker服务7.3 验证加速器是否生效
运行docker info命令,在输出结果中查找Registry Mirrors部分,如果能看到你刚才配置的镜像地址,说明加速器配置成功。
docker info | grep -A 10 "Registry Mirrors"8. 安装并验证Docker Compose
虽然我们在安装docker-ce时已经包含了docker-compose-plugin,但为了确保它正常工作,并且让你熟悉新旧命令的区别,我们还需要验证一下。
8.1 验证Docker Compose插件
新版的docker-compose-plugin通过docker compose命令(注意是空格,不是横线)来使用。
docker compose version你应该能看到类似Docker Compose version v2.20.2的输出。这证明插件安装成功。
8.2 了解Docker Compose V1与V2
- V1 (
docker-compose): 一个独立的Python二进制文件,需要单独下载安装。 - V2 (
docker compose): 作为Docker CLI的插件,与docker命令集成更好,性能更优,是未来的方向。
本教程安装的是V2插件。如果你已有的脚本或文档中写的是docker-compose(带横线),大部分情况下可以直接替换为docker compose(空格),兼容性很好。你也可以创建一个软链接来兼容旧命令:
sudo ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/docker-compose这样,执行docker-compose命令实际上也会调用V2插件。
8.3 使用Docker Compose快速启动一个服务
我们来一个快速测试,创建一个简单的docker-compose.yml文件来启动一个Nginx服务。
mkdir ~/nginx-test && cd ~/nginx-test cat > docker-compose.yml <<EOF version: '3.8' services: web: image: nginx:alpine ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html EOF # 创建一个简单的首页 mkdir html && echo "<h1>Hello from Docker Compose!</h1>" > html/index.html # 启动服务(在后台运行) docker compose up -d # 查看运行状态 docker compose ps # 访问服务,你可以用curl或者在浏览器访问 http://你的服务器IP:8080 curl http://localhost:8080如果看到“Hello from Docker Compose!”,说明Docker Compose工作正常。最后,记得停止并移除这个测试服务:
docker compose down cd .. rm -rf ~/nginx-test9. 常见问题与故障排查实录
即使按照教程一步步操作,你也可能会遇到一些问题。这里我整理了多年来被问得最多、最容易踩坑的几个点及其解决方案。
9.1 添加GPG密钥或仓库时报错“找不到命令”
问题描述:在执行curl或gpg命令时,提示command not found。原因分析:系统没有安装curl或gnupg软件包。解决方案:回到3.2 安装基础依赖工具步骤,根据你的发行版安装所需的工具包。
9.2 在Ubuntu上添加仓库时,lsb_release -cs返回未知代号
问题描述:执行echo ... $(lsb_release -cs) ...时,系统提示找不到对应的仓库。原因分析:你使用的可能是非LTS版本、开发中版本,或者是一个Docker官方尚未提供直接支持的衍生发行版(如Linux Mint)。解决方案:手动查找与你Ubuntu版本对应的上游Ubuntu代号。例如,Linux Mint 21 “Vanessa” 基于 Ubuntu 22.04 “Jammy Jellyfish”。那么,在配置仓库时,将$(lsb_release -cs)直接替换为jammy。
# 假设你用的是基于Ubuntu 22.04的系统 echo \ "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ jammy stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null9.3 安装时出现依赖冲突或包损坏错误
问题描述:运行sudo apt-get install docker-ce时,提示类似unmet dependencies、package ... has unmet dependencies或E: Sub-process /usr/bin/dpkg returned an error code (1)的错误。原因分析:可能是之前安装的旧版本Docker或某些容器运行时(如podman、containerd的冲突版本)没有清理干净,或者本地软件包索引损坏。解决方案:尝试以下步骤:
- 彻底清理旧版本(见3.1节)。
- 修复损坏的包并更新索引:
sudo apt-get update --fix-missing sudo apt-get install -f # 尝试修复依赖关系 sudo dpkg --configure -a # 重新配置未完成的dpkg操作 - 如果问题依旧,可以尝试清除APT缓存并重试:
sudo apt-get clean sudo apt-get autoclean sudo rm -rf /var/lib/apt/lists/* sudo apt-get update
9.4 Docker服务启动失败,查看状态显示错误
问题描述:sudo systemctl status docker显示状态为failed,并伴有红色错误日志。原因分析:原因多样,最常见的是daemon.json配置文件格式错误,或者与现有容器运行时冲突。解决方案:
- 检查配置文件语法:使用
sudo docker --config /etc/docker daemon来测试daemon.json的语法,或者直接使用json验证工具。一个常见的错误是JSON格式不对,比如多了或少了一个逗号、引号。 - 查看详细日志:运行
sudo journalctl -u docker.service -f来实时查看Docker服务的详细日志,通常能从中找到具体的错误原因。 - 检查端口冲突:Docker默认使用
/var/run/docker.sock套接字和可能用到的2375/2376端口。确保没有其他程序占用。 - 检查存储驱动:某些文件系统或内核版本可能与Docker默认的存储驱动
overlay2不兼容。可以在daemon.json中尝试更换为vfs(性能差,仅用于测试)或查阅文档调整。
9.5 运行docker run hello-world提示权限不足
问题描述:执行docker run hello-world时,报错Got permission denied while trying to connect to the Docker daemon socket。原因分析:当前用户不在docker用户组内,或者执行usermod命令后没有重新登录。解决方案:
- 确认用户已加入
docker组:groups $USER,查看输出中是否包含docker。 - 如果已包含,说明你需要注销并重新登录当前会话,或者打开一个新的终端窗口。
- 如果未包含,请执行
sudo usermod -aG docker $USER,然后务必执行第2步(重新登录)。
9.6 镜像拉取速度极慢或超时
问题描述:docker pull或docker run拉取镜像时速度很慢,甚至出现net/http: TLS handshake timeout错误。原因分析:网络连接Docker Hub不稳定,特别是在国内网络环境下。解决方案:
- 确认镜像加速器已配置并生效:按照7.1和7.3节操作。
- 临时使用代理:如果你在具有网络代理的环境下,可以为Docker守护进程配置代理。在
/etc/systemd/system/docker.service.d目录下创建一个http-proxy.conf文件:
然后重启Docker:sudo mkdir -p /etc/systemd/system/docker.service.d sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF [Service] Environment="HTTP_PROXY=http://your-proxy-ip:port" Environment="HTTPS_PROXY=http://your-proxy-ip:port" Environment="NO_PROXY=localhost,127.0.0.1,.your-domain.com" EOFsudo systemctl daemon-reload && sudo systemctl restart docker。 - 使用第三方镜像仓库:对于一些常用镜像(如
ubuntu,nginx,redis),可以尝试直接从国内镜像站拉取,例如:docker pull registry.cn-hangzhou.aliyuncs.com/library/ubuntu:latest
10. 生产环境进阶考量与维护建议
如果你是在生产服务器或需要长期稳定运行的环境下安装Docker,除了上述基础步骤,还需要关注以下几点。
10.1 存储驱动与存储目录规划
默认情况下,Docker将所有数据(镜像、容器、卷)存放在/var/lib/docker。随着使用,这个目录可能会变得非常庞大。
- 规划独立分区或大容量磁盘:建议将
/var/lib/docker挂载到单独的、容量较大的磁盘分区上,避免占满系统根分区导致服务器宕机。 - 了解存储驱动:对于现代Linux内核(4.x以上),
overlay2是默认且推荐的存储驱动,性能较好。你可以在daemon.json中通过"storage-driver": "overlay2"来显式指定(通常默认已是)。除非有特殊需求,否则不要轻易更改。
10.2 日志与磁盘空间管理
容器会持续产生日志,如果不加管理,可能迅速吞噬磁盘空间。
- 全局日志配置:正如我们在
daemon.json中配置的log-opts,限制日志文件的大小和数量是最佳实践。 - 容器级别日志限制:在运行容器时,也可以单独指定日志驱动和选项:
docker run --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 your-image - 定期清理:可以设置定时任务(cron job)来定期清理不用的Docker资源:
# 删除所有已停止的容器 docker container prune -f # 删除所有未被任何容器引用的悬空镜像 docker image prune -f # 删除所有未被使用的卷(谨慎!确保数据已备份) docker volume prune -f # 删除所有未被使用的网络 docker network prune -f # 一键清理所有悬空资源(镜像、容器、网络、卷,需要确认) docker system prune -f
10.3 内核参数与安全加固
对于高负载或安全要求高的环境,可能需要调整系统内核参数。
- 修改系统限制:在
/etc/sysctl.conf文件中增加以下配置,然后执行sudo sysctl -p生效,可以提升容器性能和稳定性:# 增加系统最大文件描述符数量 fs.file-max = 1000000 # 允许iptables对桥接流量进行过滤(Docker网络需要) net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-arptables = 1 # 调整虚拟内存分配策略,避免OOM Killer过早杀死容器进程 vm.overcommit_memory = 1 vm.swappiness = 0 - 安全建议:
- 定期更新Docker引擎和容器镜像:
sudo apt-get update && sudo apt-get upgrade(Ubuntu) 或sudo yum update(RHEL)。 - 避免在容器内以root身份运行应用进程,在Dockerfile中使用
USER指令指定非root用户。 - 考虑使用
--read-only标志以只读模式运行容器文件系统,增强安全性。 - 使用Docker Bench for Security等工具进行安全扫描和合规检查。
- 定期更新Docker引擎和容器镜像:
10.4 备份与恢复策略
/var/lib/docker目录包含了Docker的全部状态。定期备份此目录是灾难恢复的基础。更细粒度的备份策略包括:
- 镜像备份:将重要的自定义镜像推送到私有镜像仓库(如Harbor)或使用
docker save导出为tar文件。 - 卷备份:对于命名卷(named volume)或绑定挂载(bind mount)中的重要数据,建立独立的备份流程。
- Compose文件备份:将所有的
docker-compose.yml文件纳入版本控制系统(如Git)。
安装和配置只是开始,将Docker融入你的开发、测试和部署工作流,并建立起良好的维护习惯,才能真正释放容器技术的威力。从今天起,你可以自信地在你的Linux系统上使用最新、最稳定的Docker了。如果在实践中遇到本教程未覆盖的新问题,善用docker --help、docker logs <container_id>以及搜索引擎,大部分难题都能找到答案。
