当前位置: 首页 > ai >正文

Ubuntu 22.04 安装 Docker 完整指南

Ubuntu 22.04 安装 Docker 完整指南

1. 卸载旧版本的 Docker(如果之前安装过)

运行以下命令卸载旧版本的 Docker:

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

2. 安装必要的依赖

运行以下命令安装必要的依赖:

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

3. 添加 Docker 官方 GPG 密钥

运行以下命令添加 Docker 官方 GPG 密钥:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

注意事项:

  • 确保 /etc/apt/keyrings 目录的权限正确,运行以下命令:
    sudo chmod -R 755 /etc/apt/keyrings
    

4. 设置 Docker 的 APT 仓库

运行以下命令将 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

5. 安装 Docker 引擎

运行以下命令安装 Docker 引擎及其相关组件:

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

6. 验证 Docker 是否安装成功

运行以下命令验证 Docker 是否安装成功:

sudo docker run hello-world

如果看到类似“Hello from Docker!”的输出信息,说明 Docker 安装成功。

7. 配置国内镜像源(可选,但推荐)

为了加速镜像拉取速度,建议配置国内镜像源。编辑 /etc/docker/daemon.json 文件(如果不存在则创建),添加以下内容:

sudo nano /etc/docker/daemon.json

在文件中添加以下内容:

{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","https://reg-mirror.qiniu.com"]
}

保存文件后,重启 Docker 服务以使配置生效:

sudo systemctl restart docker

注意事项:

  • 确保 /etc/docker/daemon.json 文件格式正确,避免语法错误。
  • 如果文件已存在,请不要覆盖原有内容,而是合并新的 registry-mirrors 配置。

8. 将当前用户添加到 docker 组(可选)

为了避免每次运行 Docker 命令时都需要使用 sudo,可以将当前用户添加到 docker 组:

sudo usermod -aG docker ${USER}

完成操作后,注销并重新登录,或者重启系统以使组变更生效。

注意事项:

  • 在将用户添加到 docker 组后,重新登录或重启系统是必要的,否则组变更不会生效。

9. 验证国内镜像源是否生效

运行以下命令拉取一个镜像,验证国内镜像源是否生效:

sudo docker pull hello-world

如果镜像能够快速拉取,说明国内镜像源配置成功。

10. 推荐操作

  • 创建 Docker ID:访问 Docker Hub 注册一个免费的 Docker ID,方便你分享镜像和自动化工作流程。
  • 学习更多:访问 Docker 官方入门指南,了解 Docker 的基础概念和高级用法。

11. 常见问题

  • 网络问题:如果无法连接到 Docker Hub,确保网络正常,并检查防火墙或代理设置。
  • 权限问题:如果遇到权限问题,确保 /etc/apt/keyrings 目录及其文件的权限正确。
  • 配置文件问题:确保 /etc/docker/daemon.json 文件格式正确,避免语法错误。
http://www.xdnf.cn/news/17224.html

相关文章:

  • [激光原理与应用-183]:测量仪器 - 光束型 - 光束参数乘积(BPP)的本质与含义,聚焦能力与传输稳定性的物理矛盾。
  • 深入解析C++流运算符(>>和<<)重载:为何必须使用全局函数与友元机制
  • 【开源工具】网络交换机批量配置生成工具开发全解:从原理到实战(附完整Python源码)
  • AI赋能6G网络安全研究:智能威胁检测与自动化防御
  • 【新启航】旋转治具 VS 手动翻转:三维扫描中自动化定位如何将单件扫描成本压缩 75%
  • WinForm利用 RichTextBox组件实现输出各种颜色字体日志信息
  • React 原生部落的生存现状:观察“Hooks 猎人“如何用useEffect设陷阱反被依赖项追杀
  • HarmonyOS 设备自动发现与连接全攻略:从原理到可运行 Demo
  • FreeRTOS入门知识(初识RTOS)(二)
  • Latex中公式部分输入正体的字母\mathrm{c}
  • A100用transformers推理gpt-oss
  • Dijkstra?spfa?SPstra?
  • 【Rust】多级目录模块化集成测试——以Cucumber为例
  • 深入探索 PDF 数据提取:PyMuPDF 与 pdfplumber 的对比与实战
  • PCB焊盘脱落的补救办法与猎板制造优势解析
  • 五种IO模型 阻塞IO 多路转接之select 多路转接之poll
  • AI学习笔记三十五:实时传输视频
  • python应用GRPC || consul 服务注册发现
  • GraphRAG 入门教程:从原理到实战
  • 碰一碰NFC开发写好评php语言源码
  • day21|学习前端vue3框架和ts语言
  • 什么是SpringBoot
  • Spring事务失效场景?
  • TCP粘包问题详解与解决方案
  • 使用SETNX实现分布式锁
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘spacy’问题
  • 【C#补全计划:类和对象(九)】接口
  • 嵌入式开发硬件——单片机
  • QtC++ 中使用 qtwebsocket 开源库实现基于websocket的本地服务开发详解
  • Java中接口与抽象类