如何将docker的镜像包能更小一些?

情况是这样的,我这边一个客户服务器不能上网的,然后我就用docker制作了一个镜像。
我这个镜像是通过
FROM centos:centos7.9.2009
RUN yum install -y libaio* && yum install -y libnuma* && yum install -y net-tools && yum install -y epel-release && rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm;\
yum-config-manager –enable remi-php74;
yum install -y php74 php74-php-opcache php74-php php74-php-cli php74-php-common php74-php-fpm php74-php-mysqlnd php74-php-pecl-zip php74-php-devel php74-php-gd php74-php-pecl-mcrypt php74-php-mbstring php74-php-xml php74-php-pear php74-php-bcmath php74-php-json php74-php-phpiredis php74-php-pecl-redis5.x86_64;
我还在镜像里面安装了mysql,还有nginx,redis。
然后我这个镜像大小达到了2.2g。所以我问下我应该怎么做既能在centos里面安装那些软件,还能尽量小一些的包大小?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 25

系统镜像用 alpine 类型的,你可以基于官方的PHP镜像来做,在里面安装mysql、nginx、redis就行了。想减小体积,扩展和依赖,都按需安装,不要用不到都一股脑装上去。
我有个镜像例子供你参考 github.com/wenshunbiao/docker/blob...

1年前 评论
donggan (楼主) 1年前
忆往昔弹指间 (作者) 1年前
donggan (楼主) 1年前
donggan (楼主) 1年前
kkokk 1年前
忆往昔弹指间 (作者) 1年前
donggan (楼主) 1年前
忆往昔弹指间 (作者) 1年前
sanders 1年前
Marrigan

docker wasm应该可以,不过处于 beta阶段,可以关注下

1年前 评论
风吹枫落

说实话都装完小不了多少,我用的alpine,都装完,没有mysql的情况下接近600m,不能上网的服务器不是更无所谓大小吗

1年前 评论
冯小胖同学 1年前
忆往昔弹指间 1年前
风吹枫落 (作者) 1年前
风吹枫落 (作者) 1年前
冯小胖同学 1年前
忆往昔弹指间 1年前

可以php,mysql,redis分开容器,基于alpine镜像,使用docker网络进行容器通信,可以参考dnmp

1年前 评论

alpine 加docker-comppse分开,数据用挂载目录

1年前 评论

尝试在这个镜像的基础上安装其他环境 webdevops/php-nginx:7.4-alpine ,它已经包含php环境和nginx环境

1年前 评论

你安装完环境把 -dev 结尾的软件包都卸载了即可,那些在运行时都没用

1年前 评论
sanders

别用 centos ;)

官方镜像可没有太大的:hub.docker.com/_/php/tags

debian 和 alpine 都挺小的,需要什么扩展在构建的时候再安装。

一些安装时需要的程序比如: gcc 之类的一定要在构建镜像的最后删除掉。

使用容器就不要大而全,包和库尽量能少装就少装,不要装mysql、nginx和redis,这些软件要么构建独立的镜像,其实大多数情况下官方或社区提供的镜像已经可以满足大多数环境。

如果想在构建的镜像中加入方便开发调试的工具,建议在构建的环境的镜像为基础,安装这些软件来构建新的镜像。

1年前 评论
donggan (楼主) 1年前
sanders (作者) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!