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

【Unbuntu安装docker】

Ubuntu安装docker

使用ubuntu24.04系统部署docker

  1. 更新软件源
sudo apt update
  1. 安装基本软件
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common lrzsz -y
  1. 指定使用阿里云镜像
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  1. 查看可安装的 Docker 版本
apt-cache madison docker-ce
  1. 安装最新版本docker-ce
sudo apt-get install docker-ce -y
sudo apt install docker-ce=5:26.0.0-1~ubuntu.24.04~noble docker-ce-cli=5:26.0.0-1~ubuntu.24.04~noble containerd.io

5.查看docker

遇到问题:

没有指定版本,默认安装了最新版本的docker(28.01),Docker 28.01 使用 cgroup v2,/proc/self/mountinfo 的路径结构发生了变化,导致容器中获取容器id脚本失效:

  • 使用cgroup1获取容器id,打印出来没有值
cat /proc/self/cgroup | grep -o -E "[0-9a-f]{64}" | head -n 1
  • 通过 cgroup v2 正确获取容器 ID,虽然能获取到id但是不是容器id并不能使用,且程序也需要改动
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime)

解决方案:

既然找到了原因,于是想到了能不能降低cgroup版本,然后去查了下docker对于cgroup的兼容性如下表,28.0.x的版本无法支持cgroup v1

Docker 版本默认 cgroup 版本说明
< 20.10cgroup v1默认使用 cgroup v1
20.10.xcgroup v1默认使用 cgroup v1,但已支持 cgroup v2(需手动切换)
24.0.xcgroup v2默认使用 cgroup v2,可手动切回 cgroup v1
28.0.x(最新) cgroup v2强制使用 cgroup v2,不再支持 cgroup v1
  • 切换获取到容器id方法,但是使用cat /etc/hostname存在不稳定性,而且程序已经现场部署,更新迭代成本高,故没有采用
cat /etc/hostname
  • 选择降低docker版本

一、降级 Docker 到 28.0.x 以下版本

  1. 卸载当前 Docker 版本
sudo apt remove docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc -y
  1. 添加 Docker 官方仓库
sudo apt update

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common lrzsz -y

sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  1. 查看当前系统支持的docker版本
apt-cache madison docker-ce

在这里插入图片描述

  1. 安装指定版本的 Docker
sudo apt install docker-ce=5:26.0.0-1~ubuntu.24.04~noble docker-ce-cli=5:26.0.0-1~ubuntu.24.04~noble containerd.io
  1. 检查 Docker 版本
docker version

二、切换系统回 cgroup v1

  1. 编辑 GRUB 配置
sudo nano /etc/default/grub
  1. 找到以下行:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
  1. 在末尾添加:
systemd.unified_cgroup_hierarchy=0
  1. 修改后:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash systemd.unified_cgroup_hierarchy=0"

  1. 更新 GRUB 配置并重启
sudo update-grub
sudo reboot

  1. 检查是否切换成功
mount | grep cgroup

  1. 若输出类似以下内容,表示已回到 cgroup v1:
cgroup on /sys/fs/cgroup type cgroup (rw,relatime,blkio)

在这里插入图片描述

相关文章:

  • Tomcat新手登峰指南:从零到部署的原子化实践
  • 《解锁Flutter:跨平台开发的未来之光》:此文为AI自动生成
  • Linux下GCC和C++实现带多组标签的Snowflake SQL查询批量数据导出程序
  • Linux常用命令速查手册
  • 一键爬取b站视频
  • 「JavaScript深入」理解 JavaScript 中的不可变对象(Immutable Object)
  • Android 高版本 DownloadManager 封装工具类,支持 APK 断点续传与自动安装
  • 玩转python:通俗易懂掌握高级数据结构-collections模块之Counter
  • 利用委托用户控件、窗体之间传值 c#
  • 响应式编程-基于Reactor模式WebFlux框架的Spring Gateway
  • 生成省市区JSON
  • http 405 Not Allowed
  • 2018年全国职业院校技能大赛-高职组计算机网络应用竞赛竞赛样题A卷
  • 一文讲通锁标记对象std::adopt_lock盲点
  • OpenAI与谷歌DeepMind新品同日竞技,谁能引领机器人现实任务新潮流?
  • C#-委托delegate
  • C++设计模式-观察者模式:从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析
  • 网络视频监控平台在医疗领域的应用
  • 浏览器中输入 URL 到显示主页的完整过程
  • 【后端】【django】Django 自带的用户系统与 RBAC 机制
  • 中国工程院院士、国医大师石学敏逝世
  • 冷冰川谈黑白
  • 国家主席习近平会见斯洛伐克总理菲佐
  • 罕见沙尘再度入川,官方:沙尘传输高度达到平流层,远超以往
  • 《中国人民银行业务领域数据安全管理办法》发布,6月30日起施行
  • 中方就乌克兰危机提出新倡议?外交部:中方立场没有变化