Ubuntu24安装Docker详细教程

article/2025/8/11 12:46:04

目录

Ubuntu 安装 Docker 详细教程

一、安装环境说明

二、卸载旧版 Docker(若存在)

三、安装必要的依赖

四、添加 Docker 的 GPG 密钥

五、配置 Docker 的软件源

六、安装 Docker

docker-compose离线安装

七、验证 Docker 是否安装成功

八、配置镜像加速器


Ubuntu 安装 Docker 详细教程

一、安装环境说明

本教程适用于 Ubuntu 系统,建议使用 Ubuntu 20.04 或更高版本,并且系统已更新至最新状态。在安装之前,请确保你的机器满足以下条件:

操作系统:64 位的 Ubuntu 系统。

硬件要求:具备足够的磁盘空间和内存来安装 Docker 及其相关组件,以及后续运行容器所需的资源。

二、卸载旧版 Docker(若存在)

如果你的系统之前安装过旧版本的 Docker,例如 dockerdocker-enginedocker.iocontainerdrunc 等,为避免安装冲突,需要先将它们卸载。在终端中执行以下命令:

sudo apt-get remove docker docker-engine docker.io containerd runc

执行该命令后,系统会自动卸载相关的旧版本软件包。但需要注意的是,此操作不会删除 /var/lib/docker/ 目录及其包含的镜像、容器、卷和网络等数据。如果希望以全新的状态安装 Docker 且不需要保留这些旧数据,可以手动删除该目录。不过请谨慎操作,确保你确实不需要这些历史数据。

三、安装必要的依赖

在安装 Docker 之前,需要先安装一些必要的依赖包,这些依赖包用于支持通过 HTTPS 协议访问软件仓库等功能。依次在终端执行以下命令:

sudo apt-get update
​
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y

sudo apt-get update:该命令用于更新系统的软件包索引,从软件源服务器获取最新的软件包信息,确保后续安装的软件包是最新版本。

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y​:安装一系列依赖包,其中 apt-transport-https​ 允许 apt​ 通过 HTTPS 协议访问软件仓库;ca-certificates​ 用于管理 SSL 证书,确保网络通信的安全;curl​ 是一个常用的命令行工具,用于在命令行中进行网络请求;gnupg-agent​ 是 GNU Privacy Guard 的一部分,用于管理 GPG 密钥,在软件包验证等方面发挥作用;software-properties-common​ 提供了一些通用的软件源管理工具和功能。-y​ 参数表示在安装过程中自动回答 “yes”,同意所有安装提示,避免手动交互确认。

image

四、添加 Docker 的 GPG 密钥

为了确保从软件源下载的 Docker 软件包的完整性和安全性,需要添加 Docker 官方的 GPG 密钥。在终端中执行以下命令:

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

此命令通过 curl 工具从阿里云镜像源(这里使用阿里云镜像源来加快下载速度,你也可以使用官方源 https://download.docker.com/linux/ubuntu/gpg)下载 Docker 的 GPG 密钥,并将其通过管道传递给 gpg 命令进行处理。gpg --dearmor 命令将二进制格式的 GPG 密钥转换为 ASCII 装甲格式,最后将转换后的密钥保存到 /usr/share/keyrings/docker-archive-keyring.gpg 文件中。这样,系统在后续从该软件源下载 Docker 相关软件包时,就可以使用这个密钥来验证软件包的签名,确保其未被篡改。

五、配置 Docker 的软件源

将 Docker 的软件源添加到系统的软件源列表中,以便通过 apt-get 命令从该源安装 Docker。在终端执行以下命令:

echo "deb \[arch=\$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \$(lsb\_release -cs) stable" | sudo tee -a /etc/apt/sources.list.d/docker.list

该命令中,echo 部分构建了一个描述 Docker 软件源的字符串,其中:

arch=$(dpkg --print-architecture):通过 dpkg --print-architecture 命令获取当前系统的架构信息(如 amd64 等),确保下载的软件包与系统架构匹配。

signed-by=/usr/share/keyrings/docker-archive-keyring.gpg:指定使用前面下载并保存的 GPG 密钥来验证软件包签名。

https://mirrors.aliyun.com/docker-ce/linux/ubuntu:这是阿里云提供的 Docker 软件源地址,使用国内镜像源可以加快下载速度。你也可以使用官方源 https://download.docker.com/linux/ubuntu

$(lsb_release -cs):通过 lsb_release -cs 命令获取当前 Ubuntu 系统的版本代号(如 jammy 等),以便软件源提供与系统版本匹配的软件包。

stable:表示使用稳定版本的软件源。

| sudo tee -a /etc/apt/sources.list.d/docker.list​ 部分将前面构建的软件源字符串追加到 /etc/apt/sources.list.d/docker.list​ 文件中。sudo​ 用于获取管理员权限,tee​ 命令用于将标准输入的数据输出到指定文件,同时也输出到标准输出(终端),-a​ 参数表示追加模式,即不覆盖原文件内容,而是将新内容添加到文件末尾。

image

六、安装 Docker

(可选)在安装 Docker 前配置根目录

步骤如下:

(1)创建你想作为 Docker 根目录的新位置,比如 /home/docker​:

sudo mkdir -p /home/docker
sudo chown root:root /home/docker

(2)创建配置文件 /etc/docker/daemon.json​:

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

添加内容如下:

{"data-root": "/home/docker"
}

完成上述配置后,就可以安装 Docker 了。在终端中依次执行以下命令:

sudo apt-get update
​
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

再次执行 sudo apt-get update:由于前面添加了新的软件源,再次更新软件包索引,确保获取到最新的 Docker 软件包信息。

sudo apt-get install docker-ce docker-ce-cli ``containerd.io`` docker-buildx-plugin docker-compose-plugin -y:安装 Docker 相关的一系列组件,其中:

docker-ce:Docker 社区版,是 Docker 的核心运行时引擎,用于创建、运行和管理容器。

docker-ce-cli:Docker 社区版的命令行工具,通过它可以与 docker-ce 守护进程进行交互,执行各种容器管理操作。

containerd.io:一个工业级的容器运行时,负责运行和管理容器的生命周期,是 Docker 架构中的重要组成部分。

docker-buildx-plugin:这是一个 Docker 的插件,为 docker build 命令提供了更强大的构建功能,例如多平台构建等。

docker-compose-plugin​:用于定义和运行多容器的 Docker 应用程序,通过一个 docker-compose.yml​ 文件就可以管理多个相关联的容器服务。-y​ 参数同样是自动同意所有安装提示,加快安装过程。

image

笔者在安装后发现docker-compose无法正常使用,所以单独重新安装docker-compose

docker-compose离线安装

docker-compose文件需要提前手动下载或者下面的链接 放在脚本同目录

最新发行的版本地址:https://github.com/docker/compose/releases

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-(uname−s)−•(uname -m)" -o /usr/local/bin/docker-compose

nano install_docker-compose.sh

cp docker-compose-linux-x86_64  /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo rm -rf /usr/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker --version
docker-compose --version

授权运行

chmod +x install_docker-compose.sh
sh ./install_docker-compose.sh

七、验证 Docker 是否安装成功

安装完成后,可以通过多种方式验证 Docker 是否成功安装。

查看 Docker 版本:在终端执行以下命令:

sudo docker --version

如果安装成功,你会看到类似以下的输出,显示 Docker 的具体版本号:

image

运行测试容器:运行一个简单的 hello-world 容器来进一步验证 Docker 的运行状态。在终端执行以下命令:

sudo docker run hello-world

该命令会从 Docker Hub 上下载一个名为 hello-world​ 的测试镜像(如果本地不存在该镜像),然后在容器中运行它。如果一切正常,容器启动后会输出一段欢迎信息,类似如下内容:

image

这表明 Docker 已经成功安装并能够正常运行容器。

八、配置镜像加速器

在国内使用 Docker 时,由于网络原因,从官方镜像源下载镜像的速度可能较慢。为了提高镜像下载速度,可以配置镜像加速器。这里以阿里云镜像加速器为例,其他常见的镜像加速器还有网易云镜像加速器、腾讯云镜像加速器等,配置方法类似。

创建或编辑 Docker 配置文件:在终端执行以下命令:

sudo mkdir -p /etc/dockersudo nano /etc/docker/daemon.json

mkdir -p /etc/docker 命令用于创建 /etc/docker 目录,如果该目录已经存在则不会报错。nano /etc/docker/daemon.json 命令使用 nano 文本编辑器打开或创建 /etc/docker/daemon.json 文件,这个文件用于存储 Docker 守护进程的配置信息。

2. 添加镜像加速器地址:在打开的 daemon.json 文件中添加或修改如下内容:

{"registry-mirrors": ["https://docker.1panel.live"]
}

请将 https://你的镜像加速器地址 替换为你实际使用的镜像加速器地址,例如阿里云镜像加速器地址在配置时可能类似 https://xxxxxxx.mirror.aliyuncs.com(具体地址需在阿里云容器镜像服务控制台获取)。添加完成后,按 Ctrl+X 组合键,然后按 Y 键确认保存,最后按 Enter 键退出 nano 编辑器。

3. 重新加载 Docker 配置并重启服务:在终端执行以下命令使配置生效:

sudo systemctl daemon-reload
sudo systemctl enable docker
sudo systemctl restart docker

sudo systemctl daemon-reload 命令通知 systemd 重新加载服务配置文件,这样它才能识别到 /etc/docker/daemon.json 文件的更改。sudo systemctl restart docker 命令则用于重启 Docker 服务,使新的镜像加速器配置生效。


http://www.hkcw.cn/article/RqmtJhKlxV.shtml

相关文章

2024第八届御网杯信息安全网络大赛线上WP详解(misc+cryoto)(详解-思路-脚本)

芜湖~ 首届御网杯线上和ISCC分开进行 但还是用的ISCC的页面差评 嘻嘻 又是玄乎的一天 以下是我自己的一些思路和解析 有什么问题或者建议随时都可以联系我 目录 附件 # Misc ##Notice ##编码转换 Brainfuck编码 jsfuck编码 Ook! 编码 ##bluetooth 导出压缩包 第一…

在Linux中安装、配置和挂载NFS的完整指南

一、NFS简介 NFS(Network File System) 是一种分布式文件系统协议,允许用户通过网络在不同主机间共享文件和目录。它适用于局域网环境,常用于服务器集群、数据共享等场景。本文详细介绍NFS服务端与客户端的安装、配置及挂载流程。…

Linux-Ubuntu下的git安装与配置

一、安装git 1.打开终端,运行以下命令(需要联网) sudo apt-get update sudo apt-get install git 2.验证安装 安装完成之后,通过运行以下命令验证git是否已经正确安装: git --version 二、配置git 2.1.配置用户名…

亲测可用:wsl2安装ubuntu22.04的GNOME桌面

本文主要介绍wsl安装的ubuntu如何配置图形化桌面,主要使用与windows操作系统环境,方便搭建Linux环境下的可视化开发环境,网上流传的很多教程都不能正确安装,以下是本人亲自验证可用的操作方法。 1、开始安装 1.1 配置源 sudo v…

个人健康中枢的多元化AI网络革新与精准健康路径探析

引言 随着数字化转型的深入推进,个人健康中枢作为集成化健康管理系统,正在从传统的单一功能向多元化的AI驱动方向快速发展。在这一背景下,新兴网络硬件技术,特别是DPU(数据处理单元)和全光网络的出现,为个人健康中枢的革新提供了前所未有的机遇。本研究将深入探讨这些技…

Linux《进程控制》

在之前的Linux《进程概念》当中我们已经了解了进程基本的概念,那么接下来在本篇当中我们将开始进程控制的学习;在本篇当中我们先会对之前的学习的创建子进程的系统调用fork再进行补充了解,并且再之后会重点的学习进程的终止、进程等待以及进程…

Java应用中 慢SQL导致内存无法回收,然后导致线程阻塞,CPU被撑爆

问题分析 慢SQL的直接危害 数据库连接池长时间被占用,导致线程堆积,请求阻塞。 未释放的 ResultSet、Statement 或 Connection 可能导致内存泄漏(例如未正确关闭资源)。 大结果集(如一次性加载百万条数据到内存&…

高质量AI歌曲生成器ACE-Step一键启动整合包,AI自动谱曲自动演唱

本次分享一款AI歌曲创作利器:ACE-Step,ACE-Step是刚发布不久的AI自动谱曲AI自动演唱软件,软件在歌曲生成速度、音乐连贯性和可控性上相对同类软件有了较大提升。ACE-Step在3小时前刚发布了新版本,我基于当前最新版本制作了免安装一…

Facebook 的隐私保护措施是否足够?技术观点

在数字时代,隐私保护成为了公众关注的焦点,尤其是对于拥有数十亿用户的社交媒体巨头 Facebook 来说,其隐私保护措施的有效性更是备受瞩目。本文将从技术角度探讨 Facebook 的隐私保护措施是否足够。 数据收集与使用 Facebook 收集用户数据的…

多语种OCR识别系统,引领文字识别新时代

在全球化与数字化深度融合的今天,语言障碍成为企业跨国协作、信息管理的一大挑战。无论是跨国合同签署、多语言档案管理,还是跨境商务沟通,高效精准的文字识别技术已成为刚需。中安智能OCR多语种识别系统应运而生,凭借其强大的光学…

强化学习实战:训练AI玩转OpenAI Gym

强化学习实战:训练AI玩转OpenAI Gym 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 强化学习实战:训练AI玩转OpenAI Gym摘要引言强化学习基础与算法分类1. 核心概念与数学表示2. 算法分类与…

前端实现导出element-plus表格和从后端获取数据导出,支持勾选导出

1. 纯前端实现导出 安装file-saver和xlsx file-saver: 用于在浏览器中触发文件的保存下载(保存为本地文件)。 使用场景: 当已经在 JavaScript 中生成了文件(如 Blob 对象),并想让用户保存它时使…

Stable Diffusion学习指南【ControlNet上篇】- 功能介绍、安装和使用

(注:文末扫码获取AI工具安装包和AI学习资料) 自 SD 系列教程发布这几个月,已被大家多次催更 ControlNet 的教程,相信很多朋友也都听说过这款神奇的控图工具。ControlNet 到底是什么?为什么作为一款插件它可…

论文阅读 | CVPR | MambaOut:视觉任务真的需要 Mamba 吗?

文章目录 论文阅读 | CVPR | MambaOut:视觉任务真的需要 Mamba 吗?摘要引言创新点概念讨论Mamba到底适合处理什么样的任务?视觉任务具有很长的序列吗?如何计算Transformer 模块的浮点运算次数(FLOPs)?定义…

基于 Q-learning 的城市场景无人机三维路径规划算法研究,可以自定义地图,提供完整MATLAB代码

一、引言 随着无人机技术的不断发展,其在城市环境中的应用越来越广泛,如物流配送、航拍测绘、交通监控等。然而,城市场景具有复杂的建筑布局、密集的障碍物以及多变的飞行环境,给无人机的路径规划带来了巨大的挑战。传统的路径规…

Vivado IP核之定点数累加Accumulator使用说明

Vivado Accumulator IP核的使用说明 配置步骤 目录 前言 一、Accumulator IP配置步骤 二、仿真 三、仿真分析 总结 前言 在现代数字信号处理和通信系统中,对数据进行快速而精确的累加操作是至关重要的。Vivado Accumulator IP核提供了一种灵活、可配置的硬件累…

中科院自动化所万字长文最新综述!当无人机遇上大模型:低空机动性智能体的综述与展望

作者:Yonglin Tian, Fei Lin, Yiduo Li, Tengchao Zhang, Qiyao Zhang, Xuan Fu, Jun Huang, Xingyuan Dai, Yutong Wang, Chunwei Tian, Bai Li, Yisheng Lv, Levente Kovacs, Fei-Yue Wang 单位:中科院自动化所多模态人工智能系统国家重点实验室&…

(35)远程识别(又称无人机识别)(一)

文章目录 前言 1 更改 2 可用的设备 3 开放式无人机ID 4 ArduRemoteID 5 终端用户数据的设置和使用 6 测试 7 为OEMs添加远程ID到ArduPilot系统的视频教程 前言 在一些国家,远程 ID 正在成为一项法律要求。以下是与 ArduPilot 兼容的设备列表。这里(here)有一个关于远…

Uniapp 自定义TabBar + 动态菜单实现教程(Vuex状态管理详解)

大家好,我是一诺。今天跟大家分享一下uniapp 封装自定义底部导航栏(TabBar) 过程中的思考和实践。通过本文,你将学会如何打造一个功能完善、可自由定制的TabBar组件! 先看效果: 支持自定义图标和样式动态…

图数据库Neo4j和JDK安装与配置教程(超详细)

目录 前言 一、Java环境配置 (一)JDK的下载与安装 (二)JDK环境配置 (三)检测JDK17是否配置成功 二、Neo4j的安装与配置 (一)Neo4j的下载与安装 (二)N…