在 Ubuntu Server 22.04 上安装 Docker 的详细步骤
在 Ubuntu Server 22.04 上安装 Docker 的详细步骤
本文档详细记录了在 Ubuntu Server 22.04 上安装 Docker 的完整过程,包括解决过程中遇到的问题。希望能对读者有所帮助。
安装过程,重点需要看官方文档。https://docs.docker.com/engine/install/ubuntu/
目录
- 卸载冲突的软件包
- 更新系统软件包
- 安装依赖包
- 添加 Docker 中科大 GPG 密钥
- 添加 Docker 中科大镜像稳定版软件源
- 再次更新软件包
- 安装最新版本的 Docker
- 配置 Docker 使用镜像加速器(hub)
- 重新启动 Docker 服务
- 验证 Docker 安装
- 实时查看 Docker 服务日志
- 附加资源
- 总结
步骤 1:卸载冲突的软件包
在安装 Docker Engine 之前,您需要卸载所有有冲突的软件包。发行版维护者在 APT 中提供了 Docker 软件包的非官方发行版。您必须先卸载这些软件包,然后才能安装 Docker Engine 的正式版本。
要卸载的非官方软件包包括:
- docker.io
- docker-compose
- docker-compose-v2
- docker-doc
- podman-docker
此外,Docker Engine 依赖于 containerd 和 runc。Docker Engine 将这些依赖项捆绑为一个包:containerd.io。如果您之前安装了 containerd 或 runc,请卸载它们以避免与 Docker Engine 捆绑的版本发生冲突。
运行以下命令来卸载所有冲突的包:
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
apt-get 可能会报告您没有安装这些包。
注意:卸载 Docker 时,不会自动删除存储在 /var/lib/docker/ 中的图像、容器、卷和网络。如果您想从全新安装开始,并且希望清理所有现有数据,请阅读 卸载 Docker Engine 部分。
步骤 2:更新系统软件包
首先,更新系统中的现有软件包:
sudo apt update
步骤 3:安装依赖包
安装必要的依赖包,这些包用于通过 HTTPS 获取软件仓库:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
步骤 4:添加 Docker 中科大 GPG 密钥
为了确保下载的 Docker 软件包的真实性和完整性,我们需要添加 Docker 的 GPG 密钥:
sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
可能的问题
-  无法下载 GPG 密钥: - 错误信息:curl: (6) Could not resolve host: mirrors.ustc.edu.cn
- 解决方案:在网上搜索其他镜像站点。参考连接:https://blog.csdn.net/m0_46471328/article/details/138043873
 背景知识:GPG 密钥用于验证软件包的完整性和真实性,确保下载的软件包没有被篡改。 
- 错误信息:
步骤 5:添加 Docker 中科大镜像稳定版软件源
我们使用中科大的镜像源来加快下载速度:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
可能的问题
-  镜像源添加失败: - 错误信息:bash: /etc/apt/sources.list.d/docker.list: Permission denied
- 解决方案:确保使用 sudo运行命令以获得必要的权限。
 背景知识:软件源是存储软件包的服务器地址,添加 Docker 的中科大镜像源可以加快下载速度,并提高可靠性。 
- 错误信息:
步骤 6:再次更新软件包
添加新的 Docker 软件源后,再次更新系统中的软件包索引:
sudo apt update
可能的问题
-  更新失败: - 错误信息:Failed to fetch http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/dists/focal/stable/binary-amd64/Packages 404 Not Found
- 解决方案:检查 sources.list.d/docker.list文件中的镜像源地址是否正确,并确认中科大镜像源可用。
 背景知识:更新软件包索引是为了让系统知道最新的软件包信息,包括新添加的软件源中的包。 
- 错误信息:
步骤 7:安装最新版本的 Docker
安装 Docker 及其依赖包:
sudo apt install docker-ce docker-ce-cli containerd.io
可能的问题
-  安装失败: - 错误信息:E: Unable to locate package docker-ce
- 解决方案:确保之前步骤中的镜像源已正确添加并更新了软件包索引。
 背景知识:Docker 是一个开源的平台,用于开发、交付和运行应用程序。它将应用程序及其依赖项打包到一个标准化的单元中,称为容器。 
- 错误信息:
步骤 8:配置 Docker 使用镜像加速器(hub)
由于国内访问 Docker Hub 可能会有速度和连接问题,我们配置 Docker 使用腾讯云的镜像加速器:
sudo mkdir -p /etc/docker
echo '{"registry-mirrors": ["https://ccr.ccs.tencentyun.com"]
}' | sudo tee /etc/docker/daemon.json > /dev/null
可能的问题
-  无法访问镜像加速器: - 错误信息:dial tcp: lookup ccr.ccs.tencentyun.com on 127.0.0.53:53: no such host
- 解决方案:确保配置的镜像加速器地址正确并可访问,可能需要更换其他地址。地址 127.0.0.53:53 是一个本地 DNS 缓存服务,通常是由系统的 systemd-resolved 服务提供的。
 背景知识:镜像加速器可以提高从 Docker Hub 拉取镜像的速度,特别是在国内网络环境下。 
- 错误信息:
步骤 9:重新启动 Docker 服务
使配置生效,重新启动 Docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
步骤 10:验证 Docker 安装
运行一个简单的 Docker 容器来验证安装是否成功:
sudo docker run hello-world
可能的问题
-  无法访问 Docker Hub: - 错误信息:denied: requested access to the resource is denied unauthorized: authentication required
- 解决方案:通过以下命令登录 Docker Hub:
 sudo docker login按照提示输入 Docker Hub 用户名和密码即可。 
- 错误信息:
-  网络连接问题: - 错误信息:dial tcp: lookup registry-1.docker.io on 127.0.0.53:53: no such host
- 解决方案:配置镜像加速器并重启 Docker 服务后,再次尝试拉取镜像。
 背景知识: hello-world镜像是一个非常小的镜像,用于验证 Docker 是否正常工作。
- 错误信息:
实时查看 Docker 服务日志
你可以使用以下命令实时查看 Docker 服务的日志:
sudo journalctl -u docker.service -f
这个命令的作用是:
- sudo:以超级用户权限运行命令。
- journalctl:查看系统日志的命令。
- -u docker.service:指定查看 Docker 服务的日志。
- -f:实时查看日志输出,类似于- tail -f。
附加资源
- Docker 官方文档
- Docker Hub
- Docker 入门指南
- Docker 社区支持
总结
通过上述步骤,我成功在 Ubuntu Server 22.04 上安装并配置了 Docker。主要就是镜像地址问题,通过调整配置文件和更换镜像源,我顺利解决了这些问题。希望你也一样。
相关文章:
在 Ubuntu Server 22.04 上安装 Docker 的详细步骤
在 Ubuntu Server 22.04 上安装 Docker 的详细步骤 本文档详细记录了在 Ubuntu Server 22.04 上安装 Docker 的完整过程,包括解决过程中遇到的问题。希望能对读者有所帮助。 安装过程,重点需要看官方文档。https://docs.docker.com/engine/install/ubu…...
前端使用 Konva 实现可视化设计器(18)- 素材嵌套 - 加载阶段
本章主要实现素材的嵌套(加载阶段)这意味着可以拖入画布的对象,不只是图片素材,还可以是嵌套的图片和图形。 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 Bug,欢迎来提 Issue 哟~ github源码 g…...
 
vue3 -layui项目-左侧导航菜单栏
1.创建目录结构 进入cmd,先cd到项目目录(项目vue3-project) cd vue3-project mkdir -p src\\views\\home\\components\\menubar 2.创建组件文件 3.编辑menu-item-content.vue <template><template v-if"item.icon"><lay-ic…...
 
Spring AOP(1)
目录 一、AOP 概述 什么是Spring AOP? 二、Spring AOP 快速入门 1、引入AOP依赖 2、编写AOP程序 三、Spring AOP 详解 1、Spring AOP的核心概念 (1)切点(Pointcut) (2)连接点ÿ…...
 
第1关 -- Linux 基础知识
闯关任务 完成SSH连接与端口映射并运行hello_world.py  ssh -p 37367 rootssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyCheckingno可选任务 1 将Linux基础命令在开发机上完成一遍 可选任务 2 使用 VSCODE 远程连接开发机并创建一个conda环境 …...
 
tensorflow keras Model.fit returning: ValueError: Unrecognized data type
题意:TensorFlow Keras 的 Model.fit 方法返回了一个 ValueError,提示数据类型无法识别 问题背景: Im trying to train a keras model with 2 inputs: an image part thats a tf.data.Dataset and a nor mal part represented by a pd.DataF…...
虚拟机固定配置IP
在Hyper-V中,vEthernet (Default Switch) 是Hyper-V自带的默认虚拟交换机,它允许虚拟机直接连接到宿主机网络或外部网络。这个虚拟交换机可以通过Hyper-V管理器或PowerShell等工具进行管理和配置。以下是具体的操作步骤: 一、通过Hyper-V管理…...
【Pytorch实用教程】pytorch中random_split用法的详细介绍
在 PyTorch 中,torch.utils.data.random_split 是一个非常有用的函数,用于将数据集随机分割成多个子集。这在机器学习和深度学习中非常常见,特别是当你需要将数据集分割成训练集和测试集或验证集时。这里是 random_split 的详细用法介绍: 功能 random_split 用于随机地将…...
 
第二讲:NJ网络配置
Ethernet/IP网络拓扑结构 一. NJ EtherNet/IP 1、网络端口位置 NJ的CPU上面有两个RJ45的网络接口,其中一个是EtherNet/IP网络端口(另一个是EtherCAT的网络端口) 2、网络作用 如图所示,EtherNet/IP网络既可以做控制器与控制器之间的通信,也可以实现与上位机系统的对接通…...
pytorch中常见的模型3种组织方式 nn.Sequential(OrderedDict)
在nn.Sequential中嵌套OrderedDict组织网络,以对层进行命名 import torch import torch.nn as nn from collections import OrderedDictclass OrderedDictCNN(nn.Module):def __init__(self):super(OrderedDictCNN, self).__init__()# 使用 OrderedDict 定义网络层self.model …...
 
达梦数据库DM8-索引篇
目录 一、前景二、名词三、语法1、命令方式创建索引1.1 创建索引空间1.2.1 创建普通索引并指定索引数据空间1.2.2 另一种没验证,官方写法1.3 复合索引1.4 唯一索引1.5 位图索引1.6 函数索引 2、创建表时候创建索引3、可视化方式创建索引3.1 打开DM管理工具3.2 找到要…...
 
【中项】系统集成项目管理工程师-第4章 信息系统架构-4.5技术架构
前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…...
 
随机梯度下降 (Stochastic Gradient Descent, SGD)
SGD 是梯度下降法的一种变体。与批量梯度下降法不同,SGD 在每次迭代中仅使用一个样本(或一个小批量样本)的梯度来更新参数。它能更快地更新参数,并且可以更容易地跳出局部最优解。 原理 SGD 的基本思想是通过在每次迭代中使用不…...
TDengine 3.3.2.0 发布:新增 UDT 及 Oracle、SQL Server 数据接入
经过数月的开发和完善,TDengine 3.3.2.0 版本终于问世了。这一版本中既有针对开源社区的功能优化,也有从企业级用户需求出发做出的功能调整。在开源版本中,我们增强了系统的灵活性和兼容性;而在企业级版本中,新增了关键…...
Ubuntu 24.04 LTS 无法打开Chrome浏览器
解决办法: 删除本地配置文件,再次点击Chrome图标,即可打开。 rm ~/.config/google-chrome/ -rf ref: Google chrome not opening in Ubuntu 22.04 LTS - Ask Ubuntu...
 
linux中RocketMQ安装(单机版)及springboot中的使用
文章目录 一、安装1.1、下载RocketMQ1.2、将下载包上传到linux中,然后解压1.3、修改runserver.sh的jvm参数大小(根据自己服务器配置来修改)1.4、启动mqnamesrv (类似于注册中心)1.5、修改runbroker.sh的jvm参数大小&am…...
 
亚信安全终端一体化解决方案入选应用创新典型案例
近日,由工业和信息化部信息中心主办的2024信息技术应用创新发展大会暨解决方案应用推广大会成功落幕,会上集中发布了一系列技术水平先进、应用效果突出、产业带动性强的信息技术创新工作成果。其中,亚信安全“终端一体化安全运营解决方案”在…...
 
Django视图与URLs路由详解
在Django Web框架中,视图(Views)和URLs路由(URL routing)是Web应用开发的核心概念。它们共同负责将用户的请求映射到相应的Python函数,并返回适当的响应。本篇博客将深入探讨Django的视图和URLs路由系统&am…...
 
怎么关闭 Windows 安全中心,手动关闭 Windows Defender 教程
Windows 安全中心(也称为 Windows Defender Security Center)是微软 Windows 操作系统内置的安全管理工具,用于监控和控制病毒防护、防火墙、应用和浏览器保护等安全功能。然而,在某些情况下,用户可能需要关闭 Windows…...
 
洛谷看不了别人主页怎么办
首先,我们先点进去 可以看到,看不了一点 那我们看向上方,就可以发现,我们那有个URL,选中 把光标插到n和/中间 把.cn删了,变成国际服 我们就可以看了 但是国际服还没搭建完,跳转的时候可能503&a…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
 
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
 
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
 
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
 
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...
