【Docker】在Ubuntu22.04上安装Docker

news2026/4/7 15:44:21
目录一.Docker版本二.在Ubuntu22.04上安装Docker-CE2.1.卸载旧版本如果有的话2.2.配置docker下载源2.3.安装Docker-CE2.4.实战经验2.4.1.Docker镜像源修改2.4.2.Docker 目录修改一.Docker版本在 Docker 的发展与演进过程中为了适应不同的技术需求和商业模式衍生出了多个重要版本和关联项目。理解这些版本之间的关系有助于更清晰地把握 Docker 的技术脉络。目前我们日常学习和使用的主要是Docker-CE。1. LXCLXC 是早期 Linux 容器技术的实现为 Docker 的诞生奠定了技术基础。最初版本的 Docker 直接使用 LXC 作为其底层容器运行时来管理内核的命名空间和控制组。尽管现在直接使用 LXC 的用户相对较少但作为一个基础项目它仍在持续开发和维护中。2. Libcontainer为了掌握发展的主动权实现更深度的优化和跨平台一致性Docker 从 0.9 版本开始引入了自研的libcontainer项目用以替代 LXC。这是一个用 Go 语言编写的库它直接操作内核的容器化功能不再依赖外部工具。到 1.10 版本Docker 彻底移除了对 LXC 的依赖。在后续的 1.11 版本中Docker 将 libcontainer 的核心功能拆分并捐赠给了开放容器倡议OCI从而催生了runC。如今libcontainer 已成为 runC 的底层核心而 runC 则发展成了容器运行时的行业标准参考实现。3. Moby ProjectMoby是 Docker 公司发起的一个开源项目旨在为容器生态系统提供一个模块化的基础组件库。它可以被理解为一个“乐高套件”开发者可以从中选取所需组件来组装自己的容器化系统。当前 Docker 引擎即dockerd的开源版本正是从 Moby 项目中的同名组件衍生而来并使用containerd作为其标准的容器运行时。Moby 代表了 Docker 技术的上游开源核心。4. Docker Community Edition (CE)Docker-CE是 Docker 公司提供的免费开源版本CE 即社区版。其核心组件如 Docker 引擎、CLI 工具均来源于 Moby 等上游开源项目。Docker-CE 面向广大开发者和爱好者提供了体验 Docker 全部核心功能的免费途径是我们目前学习和使用的标准版本。5. Docker Enterprise Edition (EE)Docker-EE是 Docker 的企业版是一个需要付费的商业化产品。它在 Docker-CE 的组件基础之上额外集成了诸如高级镜像管理、安全扫描、图形化管理界面等企业级功能并提供了由官方保障的商业技术支持与服务旨在满足大规模企业生产环境对安全、合规和运维的更高要求。总而言之从最初的 LXC 到自研的 libcontainer再到推动行业标准的 runC 和模块化的 Moby 项目最终衍生出面向社区的 Docker-CE 和面向企业的 Docker-EE这一过程清晰地展现了 Docker 从依赖外部技术到实现完全自主并最终走向全面开源和商业化的发展路径。二.在Ubuntu22.04上安装Docker-CE确定CPU,可以看到我们的是X86_64是支持的如果是arm一般会显示 aarch64确定操作系统版本本次我们使用的是Ubuntu 22.04.3 LTS2.1.卸载旧版本如果有的话卸载旧版本如果是新购买的云服务器是没有的比如输入docker并没有这个命 令就不需要卸载如果有的话就需要删除sudo apt-get remove docker docker-engine docker.io containerd runc当然卸载历史版本#卸载软件 sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y #删除目录 sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd #这个是老师修改后的目录根据实际情况设置 sudo rm -rf /data/var/lib/docker sudo rm -rf /etc/docker/daemon.json1. 卸载 Docker 软件包sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y目的使用apt-get purge命令而不仅仅是remove来卸载软件包并删除它们所有的配置文件。包含组件docker-ce: Docker 社区版引擎的核心包。docker-ce-cli: Docker 命令行工具。containerd.io: 容器运行时Docker 依赖它来管理容器生命周期。docker-buildx-plugin: 用于支持多平台镜像构建的插件。docker-compose-plugin: 官方提供的 Docker Compose 插件通过docker compose命令使用。docker-ce-rootless-extras: 允许以非 root 用户身份运行 Docker 守护进程的扩展包。-y参数自动确认操作避免需要手动输入 “yes”。2. 删除默认的 Docker 数据和运行时目录sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd目的这是最关键的一步用于彻底删除 Docker 和 Containerd 的所有持久化数据。删除的内容包括所有下载的镜像。所有创建过的容器即使已停止其可写层也存储在这里。所有的卷、网络配置、构建缓存等。如果不删除这些目录未来重新安装 Docker 时可能会看到旧的数据和镜像。3. 删除自定义的数据目录和配置文件根据实际情况sudo rm -rf /data/var/lib/docker sudo rm -rf /etc/docker/daemon.json目的清理非默认路径的残留文件。/data/var/lib/docker如果您之前通过修改/etc/docker/daemon.json中的data-root配置项将 Docker 的默认数据目录更改到了这个位置那么就必须手动删除它。这是完全卸载的关键。/etc/docker/daemon.json删除 Docker 守护进程的配置文件。如果您曾在此文件中进行过自定义配置如设置镜像加速器、修改默认存储目录等下次全新安装时需要重新配置。2.2.配置docker下载源1. 安装 curl 工具sudo apt install curl -y作用安装一个名为curl的命令行工具。解释curl用于通过各种网络协议如 HTTP、HTTPS在服务器之间传输数据。后续的命令需要用它来从 Docker 官网下载加密密钥GPG key。-y参数表示自动确认安装省去手动输入 “yes”。2. 创建gpg key目录sudo mkdir -m 0755 -p /etc/apt/keyrings作用创建一个用于存储软件源认证密钥的目录。解释sudo mkdir以管理员权限创建目录。-p确保如果父目录不存在则一并创建。-m 0755设置新目录的权限为0755所有者可读可写可执行其他用户可读可执行这是一个存放重要密钥的标准且安全的权限。/etc/apt/keyrings这是 Ubuntu 系统标准存放 APT 软件源 GPG 密钥的目录。3. 下载并导入 Docker 的 GPG 密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg作用从 Docker 官网下载加密密钥并将其转换为 APT 包管理器能够识别的格式然后保存到上一步创建的目录中。解释curl -fsSL-f: 静默失败不输出错误页面。-s: 静默模式不显示进度或错误信息。-S: 与-s配合在失败时显示错误。-L: 如果请求的页面发生了重定向自动跟随重定向。这些参数保证了下载过程安静且可靠。https://download.docker.com/linux/ubuntu/gpgDocker 官方为 Ubuntu 系统提供的 GPG 公钥下载地址。|管道符将curl下载的内容传递给后面的gpg命令处理。sudo gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpggpg用于处理加密密钥的工具。--dearmor将可读的 ASCII 格式密钥armored转换为二进制格式de-armored这是 APT 所要求的格式。--yes自动确认操作。-o ...指定输出文件的位置和名称/etc/apt/keyrings/docker.gpg。为什么需要这一步GPG 密钥用于验证从 Docker 源下载的软件包是否确实由 Docker 官方签名发布且未被篡改。这是系统安全的重要保障。4. 创建 Docker 软件源列表文件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作用生成一个文件其中包含了 Docker 官方软件源的地址信息。解释echo输出一段文本。deb ...这是一个标准的 Debian/Ubuntu 软件源格式定义。[arch$(dpkg --print-architecture)动态获取当前系统的架构如amd64,arm64确保源地址与您的系统架构匹配。signed-by/etc/apt/keyrings/docker.gpg明确指定用于验证此软件源的密钥文件位置这是最新版本 Ubuntu 的安全要求。https://download.docker.com/linux/ubuntuDocker 为 Ubuntu 提供的官方软件源地址。$(lsb_release -cs)动态获取当前系统的 Ubuntu 代号如jammy,focal确保源地址与您的系统版本匹配。stable指定使用 Docker 的稳定版发布通道。| sudo tee /etc/apt/sources.list.d/docker.list将echo输出的内容通过管道传递给tee命令该命令以管理员权限将内容写入到/etc/apt/sources.list.d/docker.list文件中。 /dev/null将tee命令在标准输出屏幕上的显示重定向到“黑洞”让命令行界面保持干净。为什么单独创建docker.list文件将 Docker 的源配置放在独立的文件/etc/apt/sources.list.d/docker.list中是一个非常好的实践便于管理启用、禁用、删除而不会弄乱系统默认的sources.list文件。5.更新本地的软件包列表执行完以上所有命令后您就已经成功地安装了必要的工具。下载并信任了 Docker 的官方加密密钥。添加了 Docker 的官方软件源地址。要完成整个配置您还必须执行以下命令来更新本地的软件包列表sudo apt-get update这个命令会让 APT 包管理器去读取新添加的 Docker 软件源获取可用软件包及其版本信息。之后您就可以使用sudo apt-get install docker-ce来安装 Docker 了。2.3.安装Docker-CEsudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y安装时间还是有一点小长的我们耐心等待即可。如果这个安装过程中出现报错我们可以去查看日志#journalctl 是操作系统日志查看命令 #-e 表示从末尾看 #-u 表示看哪个系统组件的我们的组件是docker journalctl -eu docker然后可以执行下面两个命令进行修复systemctl daemon-reload systemctl start docker我们现在可以查看一下docker的运行状况systemctl status docker如果没有启动那么就需要手动启动一下sudo systemctl start docker接下来我们还需要配置Docker自启动# 设置开机⾃启动 sudo systemctl enable docker # 查看是否开机启动 sudo systemctl list-unit-files|grep docker.service查看版本docker version更详细查看docker 信息docker info用户组配置当前用户不在 docker 用户组中只需要将用户加入 docker 组即可。sudo usermod -aG docker $USER newgrp docker2.4.实战经验2.4.1.Docker镜像源修改为什么要修改 Docker 镜像源默认情况下Docker 从它的官方镜像仓库 Docker Hub 拉取镜像。对于位于中国大陆的用户来说由于网络原因直接从 Docker Hub 拉取镜像可能会非常慢甚至经常失败。为了解决这个问题国内许多高校和云服务提供商设立了 Docker 镜像源或称镜像加速器。镜像源就是一个代理缓存服务它会定期从 Docker Hub 同步常用的公共镜像。当你配置了镜像源后你的 Docker 客户端不会直接请求docker.io(Docker Hub)。而是去请求你配置的镜像源服务器例如https://docker.mirrors.ustc.edu.cn/。如果该镜像源上有你需要的镜像它会直接返回给你速度极快。如果它没有比如是一个很冷门的镜像它会自动去 Docker Hub 拉取缓存到本地再返回给你。这样可以极大地提升在国内拉取 Docker 镜像的速度和稳定性。修改镜像源的过程第 1 步编辑配置文件/etc/docker/daemon.json这个文件是 Docker 守护进程dockerd的主要配置文件。Docker 在启动时会读取这个文件来应用各种自定义配置。命令你需要使用文本编辑器如vim,nano来创建或修改这个文件。通常需要使用sudo来获得 root 权限。sudo vim /etc/docker/daemon.json内容往sudo vim /etc/docker/daemon.json里面写入下面这些内容。{ registry-mirrors: [ https://do.nark.eu.org, https://dc.j8.work, https://docker.m.daocloud.io, https://dockerproxy.com, https://docker.mirrors.ustc.edu.cn, https://docker.nju.edu.cn ] }registry-mirrors这是一个键它的值是一个数组意味着你可以配置多个镜像源Docker 会按顺序尝试但通常一个就足够了。这里给了大量的Docker镜像源第 2 步重新启动 Docker 守护进程仅仅修改配置文件是不够的需要让 Docker 守护进程重新加载这个配置文件才能生效。sudo systemctl restart docker重启后所有新拉取镜像的请求都会通过你配置的镜像源进行。如何验证配置是否成功运行以下命令来检查当前的 Docker 配置sudo docker info在输出的信息中你应该能找到类似下面这样子的几行如果看到了你配置的镜像源地址就说明配置成功了2.4.2.Docker 目录修改为什么需要修改 Docker 目录Docker 的所有核心数据包括镜像Images容器Containers卷Volumes网络配置Networks容器运行时数据默认都存储在/var/lib/docker目录下。随着你拉取的镜像和创建的容器越来越多这个目录会变得非常庞大很容易耗尽系统根分区/的磁盘空间导致系统问题。因此在安装 Docker 之前或之后将其数据目录规划到一个足够大的独立分区或磁盘上是一个非常重要的运维操作。修改 Docker 配置文件daemon.json我们通过配置文件来修改Docker的数据目录1.创建新目录mkdir -p /data/var/lib/docker-p确保如果/data/var/lib路径不存在也会被一并创建。这里你创建的新目录是/data/var/lib/docker这很好因为它保持了路径的一致性便于管理。你也可以简单地创建为/data/docker。2.编辑 Docker 配置文件sudo vim /etc/docker/daemon.json这个文件是 Docker 守护进程dockerd的核心配置文件。如果文件不存在直接创建它。3.添加data-root配置{ data-root: /data/var/lib/docker }非常重要JSON 格式必须正确键和字符串必须用双引号末尾不能有逗号。格式错误会导致 Docker 无法启动。data-root这个配置项明确指定了 Docker 守护进程用来存储所有数据的根目录路径。修改它就意味着告诉 Docker“你以后别再用/var/lib/docker了把所有东西都放到/data/var/lib/docker这里来。”4.重新加载 systemd 和重启 Dockersudo systemctl daemon-reload # 让 systemd 重新读取某个服务的配置文件 sudo systemctl restart docker # 重启 Docker 服务以应用新的配置systemctl daemon-reload当你修改了某个服务的配置文件比如 Docker 的docker.service文件时需要运行这个命令来重新加载。但请注意仅仅修改/etc/docker/daemon.json通常不需要这一步直接restart即可。restart操作本身会重新加载daemon.json。不过执行一下更保险是一个好习惯。5.检查 Docker 状态sudo systemctl status docker这是至关重要的一步你必须确保 Docker 服务成功重启。如果daemon.json格式有误这里会显示失败failed。如果失败需要查看日志journalctl -xe -u docker来排查错误。6.修改前后的变化修改前docker info命令输出中Docker Root Dir: /var/lib/docker修改后docker info命令输出中Docker Root Dir: /data/var/lib/docker这个时候我们再去查看这个目录发现里面多了一些东西到这里我们的Docker就算是彻底安装完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2488224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…