ITKeyword,专注技术干货聚合推荐

注册 | 登录

docker php环境容器大瘦身

technofiend 分享于 2016-03-22

推荐:docker 容器

docker 容器(container)类似于一个轻量级的沙箱,docker 利用容器来运行和隔离应用。 容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这

2020腾讯云7月秒杀活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

参考:http://www.chawenti.com/articles/26311.html 折腾了一天,参考《Docker 的 Image 太大,怎么变小?》做了一次 本人用lnmp1.2一键安装的环境抽出精简版的php环境。 步骤: 1、 在安装好php环境的容器,参考上面贴出的链接那篇文章的部分,做好基础工作: #创建工作目录mkdir /rootfs#进入工作目录cd /rootfs#创建基础目录mkdir -p bin etc lib proc sys tmp dev/pts usr/lib64 usr/bin usr/local/bin#创建一个空的DNS服务用的文件touch etc/resolv.conf#复制名称解析文件cp /etc/nsswitch.conf etc/nsswitch.conf#创建用户和用户组文件echo root:x:0:0:root:/:/bin/sh > etc/passwdecho root:x:0: > etc/group#创建php程序运行的用户echo www:x:1001:1001:root:/:/bin/sh >> etc/passwdecho www:x:1001: >> etc/group#依赖库软链接ln -s lib lib64#工具软链接ln -s bin sbin#下载busybox,若网速慢可以用迅雷下载,然后复制到/sbin/busyboxcurl -o /sbin/busybox http://busybox.net/downloads/binaries/1.21.1/busybox-x86_64#加权限chmod +x /sbin/busybox#安装busyboxcp /sbin/busybox binbusybox --install -s bin 2、找依赖,假设我的php安装在/usr/local/php中,用交互模式进入容器 运行命令查看依赖: ldd /usr/local/php/sbin/php-fpm 会列出一大堆依赖库,并且这些库在不同的路径。由于用到busybox,那就将这些库复制到工作目录的根目录的lib即可。即/rootfs/lib/中,用这个工具找出来的是不完整的、还有c++运行库等等。 我整理出来的完整依赖库是: ld-linux-x86-64.so.2libbz2.so.1libc.so.6libcom_err.so.2libcrypt.so.1libcrypto.so.10libcurl.so.4libdl.so.2libfreebl3.solibfreetype.so.6libgcc_s.so.1libgssapi_krb5.so.2libiconv.so.2libidn.so.11libjpeg.so.62libk5crypto.so.3libkeyutils.so.1libkrb5.so.3libkrb5support.so.0liblber-2.4.so.2libldap-2.4.so.2liblzma.so.5libm.so.6libmcrypt.so.4libnsl.so.1libnspr4.solibnss_files.so.2libnss3.solibnssutil3.solibpcre.so.1libplc4.solibplds4.so

推荐:Docker学习笔记 — Docker容器

基本概念 Docker利用容器运行应用,容器是从镜像创建的运行实例,每个容器都是相互隔离的。 镜像是只读的,容器在启动的时候在其上创建了一层可读写层。 启动和

libpng15.so.15libpthread.so.0libresolv.so.2librt.so.1libsasl2.so.3libselinux.so.1libsmime3.solibssh2.so.1libssl.so.10libssl3.solibstdc++.so.6libxml2.so.2libz.so.1 当然根据你php安装的扩展而定,但是有些决不能缺少, 复制到rootfs/lib/ 3、复制php程序 #复制PHP程序cp -R /usr/local/php /rootfs/usr/local/php#复制启动脚本cp /etc/init.d/php-fpm /rootfs/php-fpm 将 /usr/local/php/php-fpm.conf 改为以下配置,守护进程方式运行改为no,不然 到时候只能用交互模式 docker run -it 那种。 [global]pid = /usr/local/php/var/run/php-fpm.piderror_log = /usr/local/php/var/log/php-fpm.loglog_level = noticedaemonize = no

#这里重要[www]listen = 0.0.0.0:9000

#这里也重要listen.backlog = -1#listen.allowed_clients = anylisten.owner = wwwlisten.group = wwwlisten.mode = 0666user = wwwgroup = wwwpm = dynamicpm.max_children = 10pm.start_servers = 2pm.min_spare_servers = 1pm.max_spare_servers = 6request_terminate_timeout = 100request_slowlog_timeout = 0slowlog = var/log/slow.log 4、打包tar文件 tar cf /rootfs.tar . 5、按ctrl+p+q使php容器后台运行,找个地方创建工作目录,并且写DockerFile。 #将rootfs.tar 复制出来,其实这个已经是一个基于busybox+php创建的小型系统了docker cp technofiend/php:/rootfs.tar . 写DockerFile FROM scratchMAINTAINER Technofiend <2281551151@qq.com>ADD rootfs.tar /WORKDIR /homeEXPOSE 9000ENTRYPOINT ["/php-fpm", "start"] 然后build系统 docker build -t technofiend/miniphp . 再看看体积,瘦了很多。比还没用过的centos系统还要少。 要是导出来再压缩的话,就只有50M左右,真是快速部署必不可少的玩意啊! 注意:体积少的镜像虽然可以减少了网络传输的时间,达到快速部署的目的,但体积少的容器某些功能例如busybox提供的,可能没有完整版的性能好。所以,还是看实际用途吧! 别忘了,要定期进行安全升级,不然很可能就会有安全隐患。

推荐:Docker容器环境检测方法【代码】

Docker容器环境检测方法【代码】 参考资料: Determining if a process runs inside lxc/Docker http://stackoverflow.com/questions/20010199/determining-if-a

参考:http://www.chawenti.com/articles/26311.html 折腾了一天,参考《Docker 的 Image 太大,怎么变小?》做了一次 本人用lnmp1.2一键安装的环境抽出精简版的php环境。 步骤: 1、 在安装好p

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。