如何将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里面安装那些软件,还能尽量小一些的包大小?
系统镜像用 alpine 类型的,你可以基于官方的PHP镜像来做,在里面安装mysql、nginx、redis就行了。想减小体积,扩展和依赖,都按需安装,不要用不到都一股脑装上去。
我有个镜像例子供你参考 github.com/wenshunbiao/docker/blob...
docker wasm应该可以,不过处于 beta阶段,可以关注下
说实话都装完小不了多少,我用的alpine,都装完,没有mysql的情况下接近600m,不能上网的服务器不是更无所谓大小吗
可以php,mysql,redis分开容器,基于alpine镜像,使用docker网络进行容器通信,可以参考dnmp
alpine 加docker-comppse分开,数据用挂载目录
尝试在这个镜像的基础上安装其他环境 webdevops/php-nginx:7.4-alpine ,它已经包含php环境和nginx环境
你安装完环境把 -dev 结尾的软件包都卸载了即可,那些在运行时都没用
别用 centos ;)
官方镜像可没有太大的:hub.docker.com/_/php/tags
debian 和 alpine 都挺小的,需要什么扩展在构建的时候再安装。
一些安装时需要的程序比如: gcc 之类的一定要在构建镜像的最后删除掉。
使用容器就不要大而全,包和库尽量能少装就少装,不要装mysql、nginx和redis,这些软件要么构建独立的镜像,其实大多数情况下官方或社区提供的镜像已经可以满足大多数环境。
如果想在构建的镜像中加入方便开发调试的工具,建议在构建的环境的镜像为基础,安装这些软件来构建新的镜像。