为dokcer中最简版ubuntu(70M)增加apt安装能力
如果要在docker中安装软件,除了直接找对应的软件镜像,一般我们会先安装Linux系统,然后再在里面安装各种需要的软件。
比如我想安装乌班图,直接下载官方的版本:
这个目前是Ubuntu20.04,只有72M,因为它只有操作系统的基本功能,大部分软件都没有。接下来我们对它进行调教。
更换apt源
这个新的系统启动后,连文本编辑器也没有。一般我们会安装vim,但是现在什么也安装不了:
现在就需要给它更换apt源并拉缓存。
打开https://mirrors.ustc.edu.cn/repogen/拉到最下面,修改版本为自己的
需要把里面的内容替换到/etc/apt
下面的sources.list
文件中。可以点后面的下载按钮下到外面,然后通过目录映射复制过去,也可以复制内容粘贴过去。这里采用直接复制的方法:先把原始文件备份,然后通过echo xxx >> file
的命令写进去,echo
接受的字符串用双引号包起来就可以换行
支持HTTPS
现在我们把源换成了国内的中科大,但是依然不能更新,会类似这样报错 Certificate verification failed: The certificate is NOT trusted. The certificate issuer is unknown. Could not handshake: Error in the certificate verification. [IP: 202.141.160.110 443]
:
可以看到里面说Try installing ca-certificates
,但是并不能用,因为现在任何软件都安装不了:
就是因为https相关的原因,需要安装ca-certificaters。但是我根本不能apt update,咋能apt install呢?陷入死循环了耶,就像下载了一个winrar.rar一样无奈。
没关系,我们手动来安装。
到 https://packages.ubuntu.com/focal-updates/amd64/libssl1.1/download 下载了libssl(找到这个地址也不容易啊),然后执行 dpkg -i libssl1.1_1.1.1f-1ubuntu2.10_amd64.deb;
到 https://packages.ubuntu.com/focal-updates/amd64/openssl/download 下载 openssl,执行 dpkg -i openssl_1.1.1f-1ubuntu2.10_amd64.deb;
到 https://packages.ubuntu.com/focal-updates/all/ca-certificates/download 下载ca-certificaters,执行 dpkg -i ca-certificates_20210119_20.04.2_all.deb。
这里都是针对20.04版本(也就是url中的focal)的64位操作系统下载的,如果你不是,要相应变更。
这时候再执行apt update
就可以了:
docker image
现在这个镜像就方便使用了,如果你不想自己走一遍,可以下载我的镜像,我刚打包上传了:
地址在https://hub.docker.com/repository/docker/davelet/ubuntu20.04/tags,可以拉取。
为dokcer中最简版ubuntu(70M)增加apt安装能力的更多相关文章
- python练习_购物车(简版)
python练习_购物车(简版) 需求: 写一个python购物车可以输入用户初始化金额 可以打印商品,且用户输入编号,即可购买商品 购物时计算用户余额,是否可以购买物品 退出结算时打印购物小票 以下 ...
- SLAM+语音机器人DIY系列:(一)Linux基础——2.安装Linux发行版ubuntu系统
摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...
- FFmpeg简易播放器的实现-最简版
本文为作者原创:https://www.cnblogs.com/leisure_chn/p/10040202.html,转载请注明出处 基于FFmpeg和SDL实现的简易视频播放器,主要分为读取视频文 ...
- Virtex6 PCIe 超简版基础概念学习(二)
Virtex6 PCIe 超简版基础概念学习(二) 分类:FPGAPCIe (2081) (0) 举报 收藏 文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 ise14.7 ...
- typescript 简版跳一跳
typescript 简版跳一跳 学习typescript,第一步应该是学习官方文档,理解最基础的语法.第二步开始用typescript实现一些js+css 或者canvas类型的游行.现在开始我们用 ...
- ROS Learning-022 learning_tf-06(编程) 现在与过去中穿梭 (Python版) --- waitForTransformFull() 函数
ROS Indigo learning_tf-06 现在与过去中穿梭 (Python版) - waitForTransformFull() 函数 我使用的虚拟机软件:VMware Workstatio ...
- 【Spring源码解析】—— 简单工厂模式的BeanFactory的超简版实现
一.什么是简单工厂模式 设计模式的核心是“分工”,通过分工将对象与职责划分的更细化,进而提升系统设计的可扩展性,使其更容易维护. 开闭原则:对扩展开放,对修改关闭:要增加一个新的处理逻辑,可以开一个新 ...
- SpringBoot2+Netty打造通俗简版RPC通信框架(升级版)
背景 上篇文章我简单的介绍了自己打造的通俗简版RPC通信框架,这篇是对简版的增强~ 如果大家对此项目还感兴趣的话,可到码云上瞄瞄:Netty-RPC 上 ...
- SpringBoot2+Netty打造通俗简版RPC通信框架
2019-07-19:完成基本RPC通信! 2019-07-22:优化此框架,实现单一长连接! 2019-07-24:继续优化此框架:1.增加服务提供注解(带版本号),然后利用Spring框架的在启动 ...
随机推荐
- CF1542E2 Abnormal Permutation Pairs (hard version)
CF1542E2 Abnormal Permutation Pairs (hard version) good tea. 对于两个排列 \(p,q\),如果 \(p\) 的字典序小于 \(q\),则要 ...
- C++ and OO Num. Comp. Sci. Eng. - Part 3.
2. Expressions and Statements 声明是将一个种类型的变量引入程序的语句. 作用域 作用域又一对花括号限定,在所有花括号之外的为全局作用域. 在作用域内声明的变量为局部变量. ...
- Admixture的监督分群(Supervised analysis)
目录 说明 实战 说明 Admixture通过EM算法一般用于指定亚群分类:或者在不知材料群体结构背景下,通过迭代交叉验证获得error值,取最小error对应的K值为推荐亚群数目.如果我们预先已知群 ...
- R语言与医学统计图形-【17】ggplot2几何对象之热图
ggplot2绘图系统--heatmap.geom_rect 这里不介绍更常见的pheatmap包. 1.heatmap函数 基础包. data=as.matrix(mtcars) #接受矩阵 hea ...
- MYSQL5.8-----3
666666666666666666666666 如多带有通配符的,要使用一下格式 select * from user where usename like "%1\%" ESC ...
- java四则运算规则
java四则运算规则 1.基本规则 运算符:进行特定操作的符号.例如:+ 表达式:用运算符连起来的式子叫做表达式.例如:20 + 5.又例如:a + b 四则运算: 加:+ 减:- 乘:* 除:/ 取 ...
- C语言中的各种类型所占的字节大小
一)64位系统和32位有什么区别? 1.64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存 2.64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能 ...
- 学习java的第十天
一.今日收获 1.java完全学习手册第二章2.9程序流程控制中的选择结构与顺序结构的例题 2.观看哔哩哔哩上的教学视频 二.今日问题 1.例题的问题不大,需要注意大小写,新的语句记忆不牢 2.哔哩哔 ...
- 【leetcode】43. Multiply Strings(大数相乘)
Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and ...
- RB-Tree深度探索
关联式容器就是通过key值来寻找value,这个和数据库很相像,为了提升查找效率,因此关联式容器底层大多数用红黑树或哈希表来实现. 红黑树是高度平衡的二叉树,它也被称为平衡二元搜索树. 如上所示,正常 ...