飞道的博客

Docker Images 版本选择

304人阅读  评论(0)

Docker Images 版本选择

如何选择 Docker 基础镜像

背景

​ Docker 镜像都是基于基础镜像构建出来的, 当我们构建容器化服务中选择基础镜像越高级,我们需要做的底层工作就越少,但这样会带来一个思考🤔, 我们容器化服务选用的基础镜像是不是越高级越好? 当然不是, 因为当我们选用越高级的基础镜像, 我们服务在构建容器服务时占用的资源就会越大。

镜像官网

Docker镜像官网(Docker Hub): https://hub.docker.com

Google镜像(gcr.io):https://console.cloud.google.com/gcr/images/google-containers/GLOBAL (需要科学上网,主要为Kubernetes相关镜像)

操作系统基础镜像

​ 当我们在构建不同服务时可能使用的操作系统基础镜像不尽相同, 有些服务可能需要 liunx 环境运行, 有些服务需要 ubuntu 系统, 可以参考下表来选择合适的基础镜像:

镜像名称 大小 使用场景
buysbox 1.15M 临时测试使用
alpine 4.41MB 主要用于测试,也可用于生产环境
centos 200MB 主要用于生产环境,支持CentOS/Red Hat,常用于追求稳定性的企业应用
ubuntu 81.1MB 主要用于生产环境,常用于人工智能计算和企业应用
debian 101MB 主要用于生产环境

buysbox

描叙: 可以讲 buysbox 理解为一个超级简化嵌入式 liunx 系统

官网:https://www.busybox.net/

镜像:https://hub.docker.com/_/busybox/

包管理命令:apk, lbu

包管理文档:https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management

Alpine

描述:Alpine是一个面向安全的、轻量级的Linux系统,基于musl libc和busybox。

官网:https://www.alpinelinux.org/

镜像:https://hub.docker.com/_/alpine/

包管理命令:apk, lbu

包管理文档:https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management

CentOS

描述:可以理解CentOS是RedHat的社区版

官网:https://www.centos.org/

镜像:https://hub.docker.com/_/centos/

包管理命令:yum, rpm

Ubuntu

描述:另一个非常出色的Linux发行版

官网:http://www.ubuntu.com/

镜像:https://hub.docker.com/_/ubuntu/

包管理命令:apt-get, dpkg

Debian

描述:另一个非常出色的Linux发行版

官网:https://www.debian.org/

镜像:https://hub.docker.com/_/debian/

包管理命令:apt-get, dpkg

如何选择 image 镜像

背景

​ 例如, 如果我们拉去一个 python 基础镜像, 选择一个完整版的 python(高级) 镜像作为基础镜像和一个 python-alpine 版本的作为基础镜像, 会发现他们大小相差近十倍

​ 通常我们在构建服务一般选择都是 alpine 版本, 因为他体积小,基本满足我们业务需求, 可能很多童鞋在日常中也使用其他镜像版本如 slim buster 等, 那我如何选择这些版本?这里以 python 镜像为例

各个版本镜像对比

Python:

基于 Debian, 官方默认镜像, 当你不确定自己需要什么镜像版本时选择这个不会错。里面的基本命令都有, 缺点:体积大

Python:-slim

基于 Debian, 删除很多默认公共软件包, 只用 python 运行最小环境, 一般有空间限制, 否则推荐使用默认镜像

Python:-alpine

基于alpine, 是极小化的 Linux 发行版, 比Debian小的多。如果想要最小的镜像,可以选择这个做为base。需要注意的是,alpine使用musl代替glibc。一些c环境的软件可能不兼容。但大部分没问题。

Debian 发行版比较:

Debian 10(buster) — 当前的稳定版(stable)
Debian 9(stretch) — 旧的稳定版(oldstable)
Debian 8(jessie) — 更旧的稳定版(oldoldstable)
Debian 7(wheezy) — 被淘汰的稳定版

通常我们在构建服务时会选择 alpine 作为服务的基础镜像, 占用体积小同时还能满足我们的业务需求


转载:https://blog.csdn.net/DanielJackZ/article/details/106129441
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场