Linux系统下Ubuntu22.04安装Docker、配置镜像加速及常用命令整理
前言最近需要在一台 Ubuntu 22.04架构为amd64即电脑嵌入式arm架构等可能不适用 电脑上部署 Docker后续主要用于 ROS2、Franka FR3 机械臂、RealSense 相机等开发环境。本文中的命令均基于实际安装过程整理方便以后重装系统或者配置其他电脑时直接查阅。1. 系统环境本次安装环境可通过命令查看lsb_release -a环境如下2. 卸载可能存在的旧版本Docker如果电脑之前安装过 Docker可以先尝试卸载旧版本或者可能存在冲突的组件没有就跳过这步sudo apt-get remove docker docker-engine docker.io containerd runc我执行时出现E: 无法定位软件包 docker-engine这个问题不用过于担心。docker-engine属于较早期的软件包名称如果当前 Ubuntu 软件源中没有这个软件包就会提示“无法定位软件包”。只要后续 Docker CE 能够正常安装即可。3. 安装必要依赖首先更新APT软件源sudo apt update然后安装后续添加 Docker 软件源需要的工具sudo apt install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release其中软件包作用apt-transport-https支持通过 HTTPS 获取软件包ca-certificates系统 CA 证书curl下载文件和密钥gnupgGPG 密钥处理lsb-release获取 Ubuntu 版本信息4. 配置 Docker GPG 密钥4.1 创建 keyrings 目录从 Ubuntu 20.04 开始旧的apt-key方式已被废弃官方要求将密钥存放在/etc/apt/keyrings目录。执行sudo install -m 0755 -d /etc/apt/keyrings命令解释/etc/apt/keyringsUbuntu 官方推荐的第三方软件密钥存放目录install -d创建目录等价于mkdir -p但更规范-m 0755设置目录权限为 “所有用户可读、可进入”保证 APT 能正常读取密钥4.2 下载 Docker GPG 密钥由于本次电脑网络环境的原因这里采用阿里云 Docker CE 镜像源curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg然后修改权限sudo chmod ar /etc/apt/keyrings/docker.gpg5. 添加阿里云 Docker CE 软件源执行echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/nullUbuntu 22.04 的版本代号为jammy因此后续执行sudo apt update能够看到类似获取1httes://mircors.alixun.com/docker- ce/1inux/ubuntu jammy InRelease获取2 https://mirrors.alixun.com/docker-ce/linux/ubuntu jammy/stable amd64 Packages说明Docker 软件源已经添加成功!6. 安装 Docker安装 Docker Engine、Docker CLI、containerd、Buildx 和 Docker Composesudo apt install -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin主要组件作用如下软件包作用docker-ceDocker Engine即Docker主程序官方社区版docker-ce-cliDocker 命令行工具containerd.io容器运行时docker-buildx-pluginDocker Buildx 构建工具可以不要docker-compose-pluginDocker Compose V27. 检查 Docker 是否安装成功7.1 查看 Docker 版本docker --version也可以可以查看到更加详细的内容比如构建时间等docker version7.2 查看 Docker Compose现在推荐使用 Docker Compose V2docker compose version8. 运行 hello-world 测试 Docker安装完成后执行sudo docker run hello-world一般来说这样是不行的因为需要访问docker原生官网网络很慢直接无法访问建议配置镜像源9. 配置 Docker 镜像加速由于部分网络环境下直接访问 Docker Hub 速度较慢甚至无法拉取镜像因此可以配置 Registry Mirror。这里需要特别区分两个概念阿里云 Docker CE 软件源 ↓ 用于 apt install docker-ce Docker Registry Mirror ↓ 用于 docker pull ubuntu、hello-world 等镜像二者不是一回事无关紧要啦也可忽略这个信息按照操作步骤来就行9.1 创建 daemon.json直接使用tee写入sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://docker.m.daocloud.io/, https://huecker.io/, https://dockerhub.timeweb.cloud, https://noohub.ru/, https://dockerproxy.com, https://docker.mirrors.ustc.edu.cn, https://docker.nju.edu.cn, https://xx4bwyg2.mirror.aliyuncs.com, http://f1361db2.m.daocloud.io, https://registry.docker-cn.com, http://hub-mirror.c.163.com, https://docker.mirrors.ustc.edu.cn] } EOF9.2 重新启动 Docker修改配置后执行sudo systemctl daemon-reload sudo systemctl restart docker10. 再次运行 hello-world重新启动 Docker 后执行主要是为了验证Docker镜像加速是否配置成功sudo docker run hello-world这次成功下载latest: Pulling from library/hello-world 4f55086f7dd0: Pull complete d5e71e642bf5: Download complete可以看到Docker Engine 已经安装并能够正常拉取和运行容器。11. 解决 Docker 必须使用 sudo 的问题这个地方也困扰了我好久每次执行docker相关命令比如docker images、docker ps -a等都要加上sudo很麻烦。虽然可以通过命令sudo -i临时进入root权限但是每次弄完后还需要执行 exit 退出。我尝试过什么添加用户组 sudo usermod -aG docker $USER还是没摸索投什么还要退出登录放弃了……建议直接执行以下命令进行修改bashrc文件sudo gedit ~/.bashrc可以看到在图片所示部分后面另起一行加入ctrls保存alias dockersudo docker执行以下命令让配置生效source ~/.bashrc12. Docker 常用命令整理Docker 基本信息1查看 Docker 版本docker --version2查看详细版本docker version3查看 Docker 系统信息docker info4查看 Docker Composedocker compose versionDocker 服务管理解决了sudo问题后以下命令可以不加 sudo1查看 Docker 状态sudo systemctl status docker2启动 Dockersudo systemctl start docker3停止 Dockersudo systemctl stop docker4重新启动sudo systemctl restart docker5设置开机自启动sudo systemctl enable docker镜像常用命令1查看本地镜像docker images2拉取镜像docker pull 镜像名如docker pull ubuntu:22.043搜索镜像docker search ubuntu4删除镜像根据镜像名称rmireinforce move imagedocker rmi ubuntu:22.04根据镜像 IDdocker rmi IMAGE_ID5强制删除docker rmi -f IMAGE_ID容器常用命令:1查看正在运行的容器docker ps2查看所有容器包括已经停止的docker ps -a3创建并进入 Ubuntu 容器docker run -it ubuntu:22.04 bash4给容器指定名字docker run --name ubuntu_test -it ubuntu:22.04 bash其中--name ubuntu_test表示容器名称为ubuntu_test-it 表示在终端交互而不会关闭当前终端interact terminator。5后台运行容器docker run -d 镜像名6停止容器docker stop 容器名/容器ID7启动已经存在的容器docker start 容器名8启动并进入容器对于已经存在的交互式容器docker start 容器名 docker exec -it 容器名 bash9退出容器在容器内部执行exit10删除容器docker rm 容器名11强制删除docker rm -f 容器名进入正在运行的 Docker 容器1最常使用docker exec -it 容器名 bash如果容器只有sh就替换 bash 为 sh宿主机与容器之间复制文件1宿主机 → Dockerdocker cp 本地文件 容器名:/目标目录例如docker cp test.txt fr3_dev:/root/2Docker → 宿主机docker cp 容器名:/容器文件路径 本地路径例如docker cp fr3_dev:/root/test.txt ./将容器保存为新的镜像如果已经在容器内部安装了大量软件例如ROS2Franka ROS2librealsenseRealSense ROS2MoveIt编译好的工作空间可以将当前容器保存为新的镜像docker commit 容器名 新镜像名:tag例如docker commit fr3_dev base_docker_franka:jazzy-franka-fr3Docker 镜像导出与导入这对于离线备份非常有用1导出镜像docker save -o 文件名.tar 镜像名:tag例如docker save -o fr3_image.tar base_docker_franka:jazzy-franka-fr32导入镜像docker load -i fr3_image.tarDocker 镜像标签查看镜像docker images1增加新的 tagdocker tag 原镜像:tag 新镜像:tag例如docker tag \ base_docker_franka:jazzy-franka-fr3 \ base_docker_franka:jazzy-franka-fr3-backup需要注意docker tag并不会复制一份完整镜像数据只是给同一个镜像增加一个新的名称/tag。Docker 清理命令删除所有已经停止的容器建议别执行除非你要是想跑路的话~~docker container prune删除未使用的镜像删除空白的那种镜像没有标签和镜像名的docker image prune个人最常用 Docker 命令速查表以后如果只是想快速查命令基本看这一部分即可目的命令查看镜像docker images查看运行中的容器docker ps查看所有容器docker ps -a拉取镜像docker pull image:tag创建交互式容器docker run -it image bash指定容器名字docker run --name NAME -it image bash启动容器docker start NAME停止容器docker stop NAME进入容器docker exec -it NAME bash删除容器docker rm NAME强制删除容器docker rm -f NAME删除镜像docker rmi IMAGE强制删除镜像docker rmi -f IMAGE查看日志docker logs NAME查看详细信息docker inspect NAME宿主机→容器docker cp file NAME:/path/容器→宿主机docker cp NAME:/path/file ./容器保存为镜像docker commit NAME image:tag导出镜像docker save -o image.tar image:tag导入镜像docker load -i image.tar查看磁盘占用docker system df查看 Compose 版本docker compose versionCompose 构建docker compose buildCompose 启动docker compose up -dCompose 停止docker compose down

相关新闻

递归与动态规划:从面试翻车到高效解题的完整指南

递归与动态规划:从面试翻车到高效解题的完整指南

1. 从一次面试翻车说起:为什么递归写得好好的,面试官却让我重写几年前我帮朋友做模拟面试,出了一道很经典的题:爬楼梯,一次可以走1阶或2阶,问走到第n阶有多少种走法。朋友三秒钟写出递归版本,代…

2026/10/15 16:10:30 阅读更多 →
Linux图形栈周刊第一期:DRM、Mesa与显示技术深度解析

Linux图形栈周刊第一期:DRM、Mesa与显示技术深度解析

1. 为什么我要开这个周刊做图形栈这一块有些年头了,从早年折腾嵌入式 framebuffer 到后来跟进 DRM 驱动、Wayland 合成器、Vulkan 渲染管线,一路踩坑无数。这个圈子有个特点:信息极度分散。内核邮件列表、各驱动的 Git 仓库、合成器项目的 is…

2026/10/15 16:10:30 阅读更多 →
STM32F4 CANopen主站实战:从寄存器级CAN驱动到SDO/PDO可靠实现

STM32F4 CANopen主站实战:从寄存器级CAN驱动到SDO/PDO可靠实现

简介:本资源是一套基于STM32F4系列单片机实现CANOPEN主站的完整工程代码与配套配置,面向嵌入式开发工程师、工业自动化方向学生及CAN总线协议进阶学习者,聚焦CIA402标准驱动器的实时控制与网络管理。资源共142个文件,以60个C源文件…

2026/10/15 16:10:30 阅读更多 →

最新新闻

VLC 3.0.11 定制版支持 AVS+ 与 DRA 软解实战指南

VLC 3.0.11 定制版支持 AVS+ 与 DRA 软解实战指南

简介:本资源为适配Windows 7及以上系统的VLC媒体播放器3.0.11定制增强版,专为需播放国产音视频编码内容的开发者、广电从业人员及高清影音爱好者设计,解决主流播放器对AVS和DRA格式兼容性不足的问题。压缩包为7z格式,大小130.6MB&…

2026/10/15 17:48:03 阅读更多 →
Android属性动画解析:从补间动画缺陷到ObjectAnimator实战与原理

Android属性动画解析:从补间动画缺陷到ObjectAnimator实战与原理

做Android开发这些年,我最早接触的是补间动画,一个AnimationSet往上一套,平移、旋转、透明度都有现成接口,看起来挺方便。但真正在复杂交互里遇到按钮“飞过去但点不到”的问题之后,我才重新理解了属性动画的价值。而O…

2026/10/15 17:48:03 阅读更多 →
2026 最新 Codex 新手教程:用 cc-switch + TaoToken 零基础跑通 AI 编程

2026 最新 Codex 新手教程:用 cc-switch + TaoToken 零基础跑通 AI 编程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 17:48:03 阅读更多 →
CAN总线协议详解:从物理层差分信号到采样点配置与工程实践

CAN总线协议详解:从物理层差分信号到采样点配置与工程实践

1. 内容整体设计与思路拆解CAN,全称Controller Area Network,控制器局域网络。做嵌入式或者汽车电子的人,对这三个字母再熟悉不过。不管是车身控制、电池管理、电机驱动,还是一些工业自动化设备,几乎所有需要多个节点可…

2026/10/15 17:48:03 阅读更多 →
预编译libssh2类库接入CMake工程:链接配置与避坑指南

预编译libssh2类库接入CMake工程:链接配置与避坑指南

简介:这份资源是面向C/C开发者的libssh2预编译类库及配套头文件包,适合需要为网络管理工具、自动化脚本或远程控制软件集成SSH2能力的开发者使用,可省去自行编译的繁琐过程。压缩包共9个文件,约1.38MB,包含4个h头文件、…

2026/10/15 17:48:03 阅读更多 →
51单片机数码管动态显示与中断系统实战:从原理到代码

51单片机数码管动态显示与中断系统实战:从原理到代码

很多人学51单片机,一开始点个LED觉得挺简单,一到数码管动态显示就开始懵了。不是显示错位就是亮度不均,再往后遇到中断更是云里雾里。我当年自学的时候也在这个节点卡了差不多两周,后来把原理彻底理清楚才发现,数码管动…

2026/10/15 17:47:03 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →