修改docker镜像版本,容器大小缩小10%!

简介: `shigen`,一位专注于Java、Python、Vue和Shell的博主,分享其通过修改Docker镜像版本实现容器瘦身的技巧。将服务从`1.0.0`更新至`1.0.1`,基于Alpine版Docker镜像,容器体积减小至原来的10%。文章展示了问题背景、选择轻量级镜像的原因及步骤,包括Docker镜像版本对比、构建和启动新容器的过程,并证实功能未受影响。`file-server`更新将发布在GitHub上,期待用户试用。一起学习,每天进步!

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。
个人IP:shigen

是的,你看的没错:修改docker镜像的版本,我的容器大小缩小到了10%。效果如下:

效果对比

其中,1.0.0属于老版本。

好的,进入正题。之前开源的工具开源的局域网文件共享工具更新到v1.0啦,相信伙伴们或多或少有使用过。

🗂「file-server」是一个开箱即用的局域网文件共享工具,扫码即可上传文件,点击即可下载文件

也经过了多轮的更新,目前最新的版本是1.0.0,引入了docker容器,简化服务的部署。但是在我的md中,也提到了一个问题:

docker景象存在的问题

也就是我的容器体积太大了。众所周知,这是一个小服务,这么大的体积,着实让人着急!而且,遇到了在外边想要多设备同步文件,真的太麻烦了。

昨天去市民之家,想要在电脑上打印文件,可把我愁死了!最后用的还是微信文件传输。

所以,我上午想了一下我的觉得我的【file-server】服务很不错了,我为什么局限在局域网呢,不能放在公网吗?局域网的优势在于省流量、安全;公网则可以实现任何地方任何网络都可以访问。所以说干就干。

先列举一下问题:

  • 容器的瘦身
  • 服务的安全,我并不是任何人都可以访问

摆在眼前的就是【容器瘦身】问题。参考了文章:在Docker中部署Python项目,以及压缩Docker镜像大小

为此,我特意查询了docker各个容器版本的区别:

镜像版本 特点
Alpine 轻量级,体积小,适合构建精简容器
Slim 基于 Debian,相对小巧,去除不必要软件包
Stretch Debian 稳定版本,包含较新软件包和库
Buster Debian 下一个稳定版本,提供更新软件包和库
Jessie Debian 旧版本,不再提供官方支持
Bullseye Debian 下一个测试版本,包含最新软件包和库

最终选择了alpine版本作为容器的基础镜像版本。

修改docker镜像版本

修改docker镜像版本

重新构建

docker build -t file-server:1.0.1 .

构建过程稍微漫长,建议提前下载好基础的镜像版本再去构建。

构建过程

启动容器

$ docker run -d -p 9000:9000 --name file-server-1-0-1 -v $(pwd)/file:/app/upload file-server:1.0.1
03e7463c3967b1a32304c4e19473d4153e4a5bc6b5ee23a4b6a6b82f5f25656d

功能验证

功能验证-文件列表

尝试上传和下载,都没有任何的问题。

在此,file-server的镜像版本的瘦身完成,shigen也将在filer-server-Github上发布最新的1.0.2版本,欢迎大家的使用。

与shigen一起,每天不一样!

目录
相关文章
|
7天前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
7天前
|
Cloud Native 持续交付 Docker
云原生技术入门与实践:Docker容器化部署示例
【9月更文挑战第25天】在数字化转型的浪潮下,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭示云原生技术的核心概念及其应用价值。我们将以Docker容器为例,逐步引导读者了解如何将应用程序容器化,并在云端高效运行。这不仅是对技术趋势的跟随,更是对资源利用和开发效率提升的探索。
26 4
|
5天前
|
Kubernetes Linux 开发者
深入探索Docker容器化技术的奥秘
深入探索Docker容器化技术的奥秘
15 1
|
8天前
|
存储 Docker 容器
Docker中容器间的通信方式有哪些13
Docker中容器间的通信方式有哪些13
14 4
|
3天前
|
网络协议 安全 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基础知识,包括网络驱动、端口映射和命名等核心概念,并深入探讨了 Bridge、Host、Overlay 和 Macvlan 四种网络类型的特点及应用场景。此外,还提供了创建、连接、查看和删除自定义网络的命令示例,以及高级网络配置方法,如网络命名空间、DNS 解析和安全通信配置,帮助开发者构建更健壮的容器化应用。
|
4天前
|
Cloud Native 持续交付 Docker
深入解析Docker容器化技术及其在生产环境中的应用
深入解析Docker容器化技术及其在生产环境中的应用
9 0
|
5天前
|
存储 Kubernetes Docker
深入探索容器化技术:Docker 实战与 Kubernetes 管理
深入探索容器化技术:Docker 实战与 Kubernetes 管理
16 0
|
6天前
|
Docker 容器
docker容器内需要执行sudo hwclock --systohc吗
docker容器内需要执行sudo hwclock --systohc吗
|
6天前
|
Docker 容器
6-16|docker怎么把容器内的文件传出来
6-16|docker怎么把容器内的文件传出来
|
6天前
|
运维 监控 Docker
掌握 Docker Compose:简化你的多容器应用部署
在微服务架构和容器化技术日益普及的今天,管理多个容器的部署和运维变得颇具挑战。Docker Compose 通过一个 YAML 文件定义和运行多容器 Docker 应用,极大地简化了这一过程。本文介绍了 Docker Compose 的基本概念、使用方法及其优势,包括简化配置、一键部署、易于版本控制和环境一致性。通过具体示例展示了如何安装 Docker Compose、创建 `docker-compose.yml` 文件并管理服务。掌握 Docker Compose 可显著提高开发效率和应用运维质量。
下一篇
无影云桌面