量子位|用上这个Python的Docker正式版镜像,你也能成为容器高玩
萧箫 发自 凹非寺
量子位 报道 | 公众号 QbitAI
加载完Python的Docker镜像后 , 顺手又装了个Python?
本文插图
这样的「误会」 , 在你看完这篇对Python的Docker“正式版镜像”的解读后 , 就会烟消云散 。
不仅可以了解到Docker镜像的结构、功能 , 还能对Docker的印象有所改观:容器看起来真的比虚拟机好用!
下面以“Python正式版”为例 , 具体来了解一下Docker镜像的用法和细节 。
Docker镜像这样用
这个镜像的基础镜像是Debian GNU/Linux 10 , 是Debian系统最新的一款名为Buster的版本 。
本文插图
Tips:Buster是《玩具总动员》中安迪的狗子 , Debian开发组喜欢用这款电影里的角色命名系统版本 。
也就是说 , 这是个基于Linux的镜像 , 不仅能保证稳定性 , 还能提供bug修复 。
接下来 , 是文件中的环境变量 。
本文插图
务必确认在PATH前面加路径 , 也就是你安装镜像的地方 , 这样能保证用到的是安装的镜像 。
此外 , 也确认一下语言的环境变量 , 不过Python3已经默认UTF-8 , 所以这一步不一定要做 。
本文插图
当然 , 也可以确认一下Python的最新版本(图中是3.8.5) 。
确认环境变量后 , 是关于运行依赖的事情 。
事实上 , 为了能运行 , Python需要依赖一些额外的软件包 。
本文插图
其中 , ca-certificates相当于一个证书列表 , 类似于浏览器用来验证 https://url/ 的证书 , 这也是Python , wget和其他工具用来验证服务器的证书 。
至于netbase , 则用来安装一些/etc中的文件 , 通常用于将确切的名称映射到某些端口 。
例如 , /etc/services就会映射到443/tcp端口上 。
在那之后 , 就是Python的安装了 。
一个编译器工具链会被安装 , 而Python代码也会被下载、编译 , 而不需要的Debian安装包也会被删掉 。
本文插图
在这其中 , 最核心的部分有如下三点:
1.Python会被安装到/usr/local位置下
2.所有的.pyc文件都会被删掉
3.一旦gcc等安装包对编译Python不再有用 , 那它们也会被删掉
【量子位|用上这个Python的Docker正式版镜像,你也能成为容器高玩】而所有的这些 , 都只需要通过RUN命令来实现 。
也许你会注意到 , 在这个过程中 , Python编译了libbluetooth-dev 。 事实上 , Python镜像的确有蓝牙接口 , 不过需要安装对应的安装包 。
此外 , 在设置别名上 , 在/usr/local/bin/python3和/usr/local/bin/python间 , 可以随意选一个名称来用(反正是一样的) 。
本文插图
最后 , 是安装pip , 事实上 , Docker会确保安装的是新版本的pip , 即它有自己的时间表 , 即使可能距离Python上一版发布已经过了很久 。
本文插图
在这个过程中 , 所有的.pyc文件都会被删除 。
done!好了 , 怎么运行?
事实上 , 一句话就够了 。
此外 , 如果在使用CMD时ENTRYPOINT为空 , 你的Python会在运行镜像时被默认运行 。
本文插图
也可以根据需要 , 指定其他可执行文件 。
本文插图
一些你可能不知道的tips
虽然大多数人不会犯这个错误 , 不过对于一些新手小白来说 , 还是可能在装上Python的Docker镜像后 , 顺手又装了个Python 。
本文插图
这样的话 , 会导致两个Python在镜像中「打架」 , 造成不必要的混乱 。
此外 , Python的官方图片往往也包含了最新的pip 。
虽然Python3.5的最后一个版本都是去年年末的事情了 , 不过即使是3.5的安装 , 也会带上最新的pip 。
还要注意的一点是 , 这个镜像安装后会删掉所有的.pyc文件 。
此外 , 这个正式版镜像并没有安装Debian的安全更新 , 可能需要你手动安装一下 。
经过一番操作后 , 你就可以放心地使用Python的Docker镜像 , 在上面运行相应的程序了 。
那么 , Docker到底与虚拟机有什么不同?
Docker与虚拟机的区别
作为一个容器 , Docker有点像虚拟机 , 本质上都是为了在不同环境中编写的各种程序而生 。
这是因为 , 编程语言总是会随着环境的更新而迭代 , 在Python更新了新版后 , 有人调侃Python2和Python3看起来根本不是一种语言 。
如果开发了一个Python3的程序 , 但测试和生产的环境只装了Python2 , 运行过程中就可能出现各种鸡飞狗跳的事情 。
本文插图
不过与虚拟机不同的是 , Docker不用再自己装个操作系统了 , 而这个东西 , 恰恰是最占地方的 。
Docker将程序中要用到的各种环境「零件」和程序一起打包 , 做成一个镜像 , 这样使用者只需要加载这一个镜像 , 就可以直接运行程序 。
相比于在电脑上加载好几个虚拟机 , 占用大半空间 , Docker不失为只有一台电脑时 , 运行各种程序的好选择 。
作者介绍
本文插图
Itamar Turner-Trauring有20多年的科学计算和分布式系统经验 , 写过Twisted网络框架 , 也在谷歌工作过 , 为Google Flight贡献过后端C++代码 。
1996-2000年 , Itamar Turner-Trauring在巴伊兰大学和特拉维夫大学(以色列排名第二和第一的大学)学习数学与计算机课程 , 并于2009年在哈佛大学取得文科学士学位 , 研究方向是人文学科 。
现阶段 , Itamar Turner-Trauring会撰写Python相关的技术文章 , 帮助开发者更快上手这款编程语言 。
推荐阅读
- 猪身上一个部位,无筋无骨不塞牙,比排骨受欢迎,上桌立马被抢光
- 中国镇|你知道中国的“心脏”在哪吗?经国家地理测量,位于一个村庄上
- 基因突变|量子力学揭示了进化的秘密:一种特殊的量子效应可以导致基因突变
- 猪身上最好吃的两块部位,价格是排骨的一半,懂行人看见就买
- 量子医学|量子医学诞生了!人类或迎来没有疾病的世界
- 炒包菜时不要直接下锅炒,用上两个小妙招,包菜清脆爽口更入味
- 武汉协和医院|武汉协和医院完成第100例儿童心脏移植,例数持续居全国首位
- 鸡身上的“黄金部位”,还得这样吃!在家就能做,更卫生更实在
- 做粉蒸肉时,有3个小窍门,用上1个,粉蒸肉垂涎欲滴,香气扑鼻
- 猪身上最好吃的部位当属它了,一上桌就被抢着吃,味道100个赞!
