Linux 系统上安装 Docker 方法详解与比较

embedded/2025/2/6 15:22:11/

Docker 是现代 DevOps 和容器化应用开发的重要工具,它简化了应用的部署和管理流程。本文将详细介绍在 Linux 系统上安装 Docker 的多种方法,并对它们的适用场景、优缺点进行对比,确保读者能够根据自身需求选择最优方案。

在这里插入图片描述

1. 官方推荐的安装方法

Docker 官方提供了基于 APT(Debian/Ubuntu)、DNF/YUM(RHEL/CentOS/Fedora)和 Zypper(openSUSE)的安装方法。这些方法通常提供了最新的稳定版本,适用于生产环境。

1.1 使用官方 APT 源安装 Docker(适用于 Debian/Ubuntu)

步骤
sudo apt update
sudo apt install -y ca-certificates curl gnupg# 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc# 添加 Docker APT 源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
优缺点

优点

  • 直接使用官方提供的最新稳定版。
  • 适用于生产环境,长期支持(LTS)版本更新较快。
  • 依赖管理较为完善。

缺点

  • 需要手动配置 Docker 官方源。
  • 依赖于 APT 包管理器,可能与系统的默认软件仓库版本冲突。

1.2 使用官方 YUM/DNF 源安装 Docker(适用于 RHEL/CentOS/Fedora)

步骤
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
优缺点

优点

  • 直接安装最新的官方稳定版。
  • 适用于生产环境,官方维护更新。

缺点

  • 依赖于 Docker 官方 YUM 源。
  • 在 RHEL 上需要额外配置(默认使用 Podman )。

2. 使用 Snap 安装 Docker(适用于 Ubuntu)

Snap 是 Ubuntu 生态下流行的通用包管理工具,可以用来安装 Docker。

步骤
sudo snap install docker
优缺点

优点

  • 适用于 Ubuntu 及其衍生版本。
  • 独立于系统包管理器,避免软件冲突。

缺点

  • 由于 Snap 的沙盒机制,某些功能可能受限。
  • 版本更新可能不如官方 APT 源及时。

3. 使用二进制包安装 Docker

对于不希望使用包管理器,或希望完全控制安装过程的用户,可以直接下载安装官方提供的二进制包。

步骤
curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-24.0.6.tgz -o docker.tgz
tar xzvf docker.tgz
sudo mv docker/* /usr/bin/
优缺点

优点

  • 无需依赖包管理器,适用于嵌入式系统或精简环境。
  • 可用于离线安装。

缺点

  • 需要手动管理依赖和更新。
  • 适合高级用户,配置难度较大。

4. 使用 Docker 官方安装脚本

Docker 官方提供了一键安装脚本,适用于快速安装测试环境。

步骤
curl -fsSL https://get.docker.com | sudo bash
优缺点

优点

  • 安装过程自动化,省去配置步骤。
  • 适用于快速搭建开发环境。

缺点

  • 不适用于生产环境,缺乏细粒度控制。
  • 可能会安装不符合系统最佳实践的依赖。

5. 使用 Podman 作为 Docker 替代方案(无 root 权限)

在某些发行版(如 Fedora)中,Podman 被推荐作为 Docker 的替代方案。Podman 提供与 Docker 兼容的 CLI,支持无 root 权限运行。

安装步骤(适用于 Fedora)
sudo dnf install -y podman
优缺点

优点

  • 无需 root 权限,安全性更高。
  • 轻量级,与 OCI 标准兼容。

缺点

  • 生态支持不如 Docker 强。
  • 部分 Docker 依赖的工具可能不兼容。

6. 不同安装方法对比总结

安装方法适用系统适用场景优点缺点
官方 APTDebian/Ubuntu生产环境稳定可靠,官方支持需手动配置源
官方 YUMRHEL/CentOS/Fedora生产环境官方维护,长期支持需要额外配置
SnapUbuntu开发环境免去依赖冲突可能受限于 Snap 沙盒
二进制包所有 Linux高度定制无需包管理器需手动更新管理
官方脚本所有 Linux快速测试一键安装生产环境不推荐
PodmanFedora/RHEL安全环境无 root 权限生态支持较弱

7. 结论

在 Linux 系统上安装 Docker 主要有几种方式:

  • 官方包管理器安装(APT/YUM):适用于生产环境,官方推荐,更新稳定。
  • Snap 安装:适用于 Ubuntu 生态,方便管理但受限于沙盒。
  • 二进制包安装:适用于精简环境,灵活但维护成本高。
  • 官方脚本:适用于测试环境,快速但不推荐用于生产。
  • Podman 替代方案:适用于对安全性要求高的场景。

建议生产环境优先选择 官方包管理器安装,开发和测试环境可考虑 Snap 或官方脚本,对安全性有额外要求的用户可使用 Podman


http://www.ppmy.cn/embedded/160062.html

相关文章

【算法】动态规划专题④ ——LCS(最长公共子序列)+ LPS(最长回文子序列) python

目录 前置知识LCS举一反三LPS 前置知识 【算法】动态规划专题③ ——二维DP python 子序列定义为: 不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 LCS 最长公共子序列 https://www.lanqiao.cn/problems/1189/learning/?p…

传输层协议 UDP 与 TCP

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 前置复盘🦋 传输层🦋 再谈端口号🦋 端口号范围划分🦋 认识知名端口号 (Well-Know Port Number) 二&#xf…

【C++】多态详细讲解

本篇来聊聊C面向对象的第三大特性-多态。 1.多态的概念 多态通俗来说就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态)。 编译时多态:主要就是我们前⾯讲的函数重载和函数模板,他们传不同类型的参数就可以调⽤不同的函数,通…

Centos7安装教程

一、虚拟机安装 VMware16 Pro(vmware workstation 16 pro for windows)下载安装_vmware16下载-CSDN博客 二、镜像下载 centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 三、新建虚拟机 四、安装Centos7 点击开启此虚拟机 选第一个,按…

Android记事本App设计开发项目实战教程2025最新版Android Studio

平时上课录了个视频,从新建工程到打包Apk,从头做到尾,没有遗漏任何实现细节,欢迎学过Android基础的同学参加,如果你做过其他终端软件开发,也可以学习,快速上手Android基础开发。 Android记事本课…

OpenAI 实战进阶教程 - 第四节: 结合 Web 服务:构建 Flask API 网关

目标 学习将 OpenAI 接入 Web 应用,构建交互式 API 网关理解 Flask 框架的基本用法实现 GPT 模型的 API 集成并返回结果 内容与实操 一、环境准备 安装必要依赖: 打开终端或命令行,执行以下命令安装 Flask 和 OpenAI SDK: pip i…

Java匿名类

匿名类 是 Java 中的一种特殊功能,允许你在创建类的同时直接创建该类的实例,而不需要显式地定义类的名字。匿名类是 局部内部类 的一种,用于简化代码结构,特别是在实现接口或扩展抽象类时。 1. 匿名类的定义 匿名类是一种没有名字…

PyQt6/PySide6 的 QDialog 类

QDialog 是 PyQt6 或 PySide6 库中用于创建对话框的类。对话框是一种特殊的窗口,通常用于与用户进行短期交互,如输入信息、显示消息或选择选项等。QDialog 提供了丰富的功能和灵活性,使得开发者可以轻松地创建各种类型的对话框。下面我将详细…