千家信息网

docker怎么自定义镜像构建php7

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"docker怎么自定义镜像构建php7",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"docker怎么自定义镜像构建php7"吧!首
千家信息网最后更新 2026年11月03日docker怎么自定义镜像构建php7

这篇文章主要讲解了"docker怎么自定义镜像构建php7",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"docker怎么自定义镜像构建php7"吧!

首先进行简单的docker安装。

要进行自定义镜像,我们需要选择一个基础镜像进行构建自己的镜像:其实说白了,就是在一个有基础定义好的容器内,执行安装各种程序的命令,生成 所谓的dockerfile 文件,既然如此第一步我们首先需要找一个本地的镜像作为基础镜像来操作即可:

1


如上图所示,我们来以centos为基础镜像,来构建一个dockerfile

2第二步我们需要构建一个目录,用于存放dockerfile文件


在root下构建docker_demo目录,存放 dockerfile文件以及需要安装的程序文件即可,因为我要搭建php的自定义环境,所以我们再来搞一个php7的压缩包即可

wget http://am1.php.net/get/php-7.0.0.tar.gz/from/this/mirror

然后改名字

现在php nginx都有了,至于composer可以在php安装成功以后再自行操作即可~~~

接下来就是编写dockerfile文件了,在此之前,简单了解下dockerfile编写的关键字格式:

from 代表基于哪个镜像

run 安装软件使用

maintainer 镜像的创建者

cmd 容器启动时执行的命令,但是一个dockerfile中只能有一条cmd命令,多条则只执行最后一条cmd

entrypoint 容器启动时执行的命令,但是一个dockerfile中只能有一条cmd命令,多条则只执行最后一条

user 使用哪个用户运行container

expose 容器内部服务暴露的端口,主机上还需要在run容器时,做端口映射:

docker run -d -p 80:8080 centos6xxx

上边命令表示把容器内部的8080端口映射到主机80端口上

env 用来设置环境变量

add 将主机上的文件拷贝到container内的对应路径,所有拷贝到容器中的文件和文件夹权限为0755,uid和gid为0,如果文件是可识别的压缩格式,则docker会帮忙解压缩,add只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了。

例子如:

add nginx-1.12.2.tar.gz /usr/local/src

volume 可以将本地文件夹或者其他容器的文件夹挂在到容器内。

workdir 切换目录使用,(相当于cd目录)

onbuild 指定的命令在构建镜像时不执行,而是在它的子镜像中执行。

学完了dockerfile基础命令,我们来试着搞一搞这个环境.

docker pull centos

首先下载一个基础镜像,如果有这一步请忽略,下面是我的dockerfile

# base image# 基础镜像from docker.io/centos# maintainer编写者maintainer xy61521@163.com# put nginx-1.12.2.tar.gz into /usr/local/src and unpack nginx 来吧nginx 和php提前都放进基础镜像的/usr/local/src目录下,方便编译安装add nginx-1.12.2.tar.gz /usr/local/srcadd php-7.0.0.tar.gz /usr/local/src# running required command 安装nginx的一系列乱七八糟的依赖包run yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-develrun yum install -y libxslt-devel -y gd gd-devel geoip geoip-devel pcre pcre-develrun useradd -m -s /sbin/nologin nginx# change dir to /usr/local/src/nginx-1.12.2workdir /usr/local/src/nginx-1.12.2# execute command to compile nginxrun ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install#先装个本地mysqlrun yum install -y wgetrun wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpmrun rpm -ivh mysql57-community-release-el7-8.noarch.rpmrun yum install -y mysql-server#截止此,开始安装php,宇宙惯例,开始安装一些编译的依赖包run yum -y install epel-releaserun yum -y install libmcrypt-develrun yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-develworkdir /usr/local/src/php-7.0.0#编译 安装run ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-config-file-scan-dir=/usr/local/php7/etc/php.d --with-mcrypt=/usr/include --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache && make && make installrun cp php.ini-production /usr/local/php7/etc/php.ini

构建成功dockerfile文件之后,docker build进行构建

docker build -t centos_lnmp:v1 .

后边的.代表相对路径当前目录,也可使用绝对路径

然后就是漫长的等待

直到构建成功镜像,至此我们重新开始

docker images


我们看到该镜像已经构建成功(有一点几率构建失败,失败的话删除容器和镜像重新构建即可),然后运行

docker run -dt -p 80:80 centos_lnmp:v1

成功后则可进入容器,配置nginx php 。

感谢各位的阅读,以上就是"docker怎么自定义镜像构建php7"的内容了,经过本文的学习后,相信大家对docker怎么自定义镜像构建php7这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

镜像 文件 容器 命令 基础 目录 成功 就是 端口 运行 主机 文件夹 环境 路径 学习 编译 代表 内容 多条 拷贝 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南云网互联网络科技有限公司 厦门中拓互联网络科技有限公司 奇士达互联网科技 现代科技和互联网有关系吗 互联网之后的科技是什么 新华互联网科技2019 宁夏众和广鑫互联网科技有限公司 互联网科技与管理 互联网金融中的现代科技 河南猎农互联网科技有限公司 互联网科技公司有风险吗 哈尔滨屹滨互联网科技有限公司 朱啸虎曾投资哪些互联网科技企业 互联网营销推广黑科技 四川互联网展示科技馆设计 上海创道互联网络科技有限公司 互联网公司属于科技吗 好易买互联网科技 现代互联网科技公司 互联网科技创业计划的风险分析 腾讯阿里互联网科技 中国 科技 互联网 百单互联网科技有限公司 互联网科技logo 互联网 科技服务平台 华夏互联网科技业 天津腾达互联网科技有限公司 浙南科技城互联网大厦建设工程 上海京穆互联网科技有限公司 互联网科技手机排行榜
0