当前位置: 首页 > news >正文

Linux系统最新版Docker安装与配置全流程指南

1. 项目概述:为什么需要一篇“最新版”Docker安装指南?

如果你在Linux上折腾过Docker,大概率遇到过这样的场景:兴冲冲地打开官方文档,照着步骤一路敲命令,结果在某个环节卡住,报错信息看得一头雾水。或者,你从某个博客教程里复制粘贴了一串命令,安装倒是成功了,但版本号一看,还是两三年前的旧版,一些新功能、性能优化和安全补丁都与你无缘。更别提不同Linux发行版(Ubuntu, CentOS, Debian等)的安装命令和依赖库天差地别,一个教程很难通吃。

这就是我写这篇教程的初衷。它不仅仅是一份命令清单,而是一个基于我多年在开发、运维和生产环境中反复实践、踩坑、优化后总结出的“完整工作流”。所谓“完整”,意味着它覆盖了从系统准备、仓库配置、版本选择、安装验证到后续优化和常见问题排查的全过程。而“最新版”,则代表我们摒弃了那些陈旧的、通过curl -sSL https://get.docker.com/ | sh一键脚本(它可能安装非官方仓库的版本),转而采用Docker官方推荐的、通过配置APT或YUM仓库来安装的方式。这种方式不仅能确保你安装的是经过Docker官方测试和签名的、最新的稳定版(Stable)或测试版(Edge),还能让你在未来通过系统的包管理器(aptyum)无缝、安全地升级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 upgradesudo yum update,Docker引擎及其相关组件(如Docker Compose)就会随着系统其他软件一起更新到最新版本,安全又省心。而通过脚本或其他方式安装的二进制包,往往需要手动重复安装流程。

因此,本教程选择的方案是:为你的Linux系统添加Docker官方APT/YUM仓库,然后通过系统的包管理器进行安装。这是Docker官方文档首推的、最适合生产环境的方法。接下来,我们将根据不同的主流Linux发行版,详细拆解每一步操作。

3. 系统准备与依赖检查

在添加仓库和安装之前,我们需要确保系统处于一个“干净”且“就绪”的状态。这个步骤常常被忽略,但却是避免后续各种诡异错误的关键。

3.1 清理旧版本Docker

如果你的系统上曾经以任何方式安装过Docker(或它的前身docker.iodocker-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仓库并使用aptyum进行安装,我们需要确保一些基础工具已就位。

Ubuntu/Debian:

sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
  • ca-certificates: 用于验证HTTPS连接的安全性。
  • curl: 用于从网络下载文件(如GPG密钥)。
  • gnupg: GNU隐私卫士,用于管理GPG密钥,验证仓库签名。
  • lsb-release: 一个工具,可以方便地获取LSB(Linux标准基础)和发行版的具体信息,我们常用它来获取系统代号(如focaljammy)。

CentOS/RHEL/Fedora:对于较新的CentOS 8+/RHEL 8+/Fedora,默认使用dnf包管理器,它已经包含了所需的基本功能。但为了兼容性和确保工具存在,可以安装:

sudo yum install -y yum-utils

yum-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: 使用稳定版仓库。如果你想尝试最新功能(但可能不稳定),可以替换为testnightly

注意事项:如果你使用的是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.repo

5. 安装Docker引擎

仓库配置好后,安装就变得非常简单了。首先更新本地软件包索引,然后直接安装docker-ce(社区版)。

5.1 Ubuntu/Debian 安装步骤

sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • docker-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-plugin

5.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-plugin

CentOS/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-plugin

6. 安装后配置与验证

安装完成并不意味着万事大吉。为了让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 psdocker 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-driverlog-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-test

9. 常见问题与故障排查实录

即使按照教程一步步操作,你也可能会遇到一些问题。这里我整理了多年来被问得最多、最容易踩坑的几个点及其解决方案。

9.1 添加GPG密钥或仓库时报错“找不到命令”

问题描述:在执行curlgpg命令时,提示command not found原因分析:系统没有安装curlgnupg软件包。解决方案:回到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/null

9.3 安装时出现依赖冲突或包损坏错误

问题描述:运行sudo apt-get install docker-ce时,提示类似unmet dependenciespackage ... has unmet dependenciesE: Sub-process /usr/bin/dpkg returned an error code (1)的错误。原因分析:可能是之前安装的旧版本Docker或某些容器运行时(如podmancontainerd的冲突版本)没有清理干净,或者本地软件包索引损坏。解决方案:尝试以下步骤:

  1. 彻底清理旧版本(见3.1节)。
  2. 修复损坏的包并更新索引:
    sudo apt-get update --fix-missing sudo apt-get install -f # 尝试修复依赖关系 sudo dpkg --configure -a # 重新配置未完成的dpkg操作
  3. 如果问题依旧,可以尝试清除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配置文件格式错误,或者与现有容器运行时冲突。解决方案

  1. 检查配置文件语法:使用sudo docker --config /etc/docker daemon来测试daemon.json的语法,或者直接使用json验证工具。一个常见的错误是JSON格式不对,比如多了或少了一个逗号、引号。
  2. 查看详细日志:运行sudo journalctl -u docker.service -f来实时查看Docker服务的详细日志,通常能从中找到具体的错误原因。
  3. 检查端口冲突:Docker默认使用/var/run/docker.sock套接字和可能用到的2375/2376端口。确保没有其他程序占用。
  4. 检查存储驱动:某些文件系统或内核版本可能与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命令后没有重新登录解决方案

  1. 确认用户已加入docker组:groups $USER,查看输出中是否包含docker
  2. 如果已包含,说明你需要注销并重新登录当前会话,或者打开一个新的终端窗口。
  3. 如果未包含,请执行sudo usermod -aG docker $USER,然后务必执行第2步(重新登录)。

9.6 镜像拉取速度极慢或超时

问题描述docker pulldocker run拉取镜像时速度很慢,甚至出现net/http: TLS handshake timeout错误。原因分析:网络连接Docker Hub不稳定,特别是在国内网络环境下。解决方案

  1. 确认镜像加速器已配置并生效:按照7.17.3节操作。
  2. 临时使用代理:如果你在具有网络代理的环境下,可以为Docker守护进程配置代理。在/etc/systemd/system/docker.service.d目录下创建一个http-proxy.conf文件:
    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" EOF
    然后重启Docker:sudo systemctl daemon-reload && sudo systemctl restart docker
  3. 使用第三方镜像仓库:对于一些常用镜像(如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等工具进行安全扫描和合规检查。

10.4 备份与恢复策略

/var/lib/docker目录包含了Docker的全部状态。定期备份此目录是灾难恢复的基础。更细粒度的备份策略包括:

  • 镜像备份:将重要的自定义镜像推送到私有镜像仓库(如Harbor)或使用docker save导出为tar文件。
  • 卷备份:对于命名卷(named volume)或绑定挂载(bind mount)中的重要数据,建立独立的备份流程。
  • Compose文件备份:将所有的docker-compose.yml文件纳入版本控制系统(如Git)。

安装和配置只是开始,将Docker融入你的开发、测试和部署工作流,并建立起良好的维护习惯,才能真正释放容器技术的威力。从今天起,你可以自信地在你的Linux系统上使用最新、最稳定的Docker了。如果在实践中遇到本教程未覆盖的新问题,善用docker --helpdocker logs <container_id>以及搜索引擎,大部分难题都能找到答案。

http://www.jsqmd.com/news/1407146/

相关文章:

  • 第33篇 STL之stack与queue:BFS/DFS的标配数据结构,面试手写不过分吧
  • Claude Code移动端更新:触控优化与AI集成重塑移动编程体验
  • windows11更新缓存清理
  • OpenClaw与企业微信插件兼容性故障排查与解决方案
  • 腾讯云Lighthouse部署OpenClaw:低成本AI智能体云端部署实战指南
  • OpenClaw开源AI智能体框架部署与钉钉集成实战指南
  • 腾讯WorkBuddy框架实战:AI Agent无缝接入微信、飞书、钉钉全指南
  • 【无标题】大陆地区如何安装istio以及kind如何导入镜像
  • 江苏博格能源科技到底怎么样?2026年镇江这家锅炉厂的真实底子 - 新闻快传
  • 从Blob视频到M3U8流:前端流媒体下载原理与实战指南
  • 高阳县专业AI推广服务商推荐 保定热讯网络深耕纺织企业拓客 - 优质新闻发布
  • FreeSWITCH呼叫流程全解析:从SIP信令到媒体协商的实战指南
  • 【关注可白嫖源码】--课程设计--毕业设计--springboot个性化学习计划制定平台[编号:project89778](案件分析)
  • 老主板魔改NVMe启动失败复盘:从UEFI驱动加载原理到安全解决方案
  • 基于Python的腾讯文档自动化解析与邮件发送系统实战
  • Agent与opencalw在智慧油气田物联网中的架构设计与工程实践
  • 传统BIOS引导黑苹果实战:老硬件安装macOS Monterey完整指南
  • python数据可视化技巧的100个练习 -- 88. 使用 Plotly 创建瀑布图进行财务分析
  • Linux驱动开发:从Kconfig/Makefile到源码树集成的完整指南
  • 2026年厌氧罐企业选型参考:多场景适配厂商推荐 - 产品推荐官
  • 紧急预警!Gemini导出excel格式全崩?别手抄了!AI导出鸭正在疯狂打脸无效加班!
  • 计算机科学不是科学 | MIT 6.001
  • Effective Command-line Interface Fuzzing with Path-Aware Large Language Model Orchestration
  • ZYNQ学习ARM裸机笔记():VITIS
  • 苏州GEO优化靠谱公司供本地企业决策选型参考 - 招财兔数字员工
  • LVM逻辑卷管理器:在线扩容实战与运维避坑指南
  • 人才管理咨询机构收费对比及高性价比选择参考 - 招财兔数字员工
  • 无锡GEO优化服务选哪家助力B端企业高效选型 - 招财兔数字员工
  • FastApi进阶
  • 北京包包回收2026市场两极分化:顶奢坚挺轻奢波动,你的包在哪一档 - 好物循环记