1.查找镜像

docker search php8.1

docker pull from one image from NAME #从搜索结果中选一个pull到本地

docker images

2.安装php

docker run -d -v /root/nginx/www:/var/www/html -p 9000:9000 --name myphpfpm imageID

-imageID pull到本地后的镜像id号

-d 让容器在后台运行

-p 添加主机到容器的端口映射

-v 添加目录映射,即主机上的 /root/nginx/www和容器中/var/www/html目录是同步的

-v /root/nginx/www:/var/www/html : 将主机中项目的目录 /root/nginx/www 挂载到容器的/var/www/html

–name myphpfpm: 将容器命名为 myphpfpm

3.是否成功

netstat -tunlp |grep 9000

netstat -tunlp用于显示 tcp,udp的端口和进程等相关情况。详细如下:

-t (tcp) 仅显示tcp相关选项

-u (udp)仅显示udp相关选项

-n 拒绝显示别名,能显示数字的全部转化为数字

-l 仅列出在Listen(监听)的服务状态

-p 显示建立相关链接的程序名

4.宿主机创建挂在目录

mkdir ~/nginx/conf/conf.d,并新建文件php.conf,写入如入内容:

说明:

php:9000: 表示 php-fpm 服务的 URL,下面会具体说明。

/var/www/html/: 是myphpfpm容器中php文件的存储路径,映射到本地的 ~/nginx/www目录(下一步实现)。

5.安装nginx

docker run --name ngixn -p 89:80 -d \
-v /root/nginx/www:/usr/share/nginx/html:ro \
-v /root/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--link myphpfpm:php \
nginx

-p 89:80:端口映射,把nginx中的80映射到本地的89端口

~/nginx/www:是本地html文件的存储目录,/usr/share/nginx/html是容器内html文件的存储目录

~/nginx/conf/conf.d:是本地nginx配置文件的存储目录,/etc/nginx/conf.d是容器内nginx配置文件的存储目录

--link myphpfpm:php:把myphpfpm的网络并入nginx,并通过修改nginx的/etc/hosts,把域名php映射成php的IP地址,让nginx通过php:9000 访问php-fpm

nginx:指定镜像名称

6.验证

在 ~/nginx/www目录下创建 index.php,并写入phpinfo(),即可正确显示。

7.其它

nginx配置都需要重启nginx服务:

docker stop ngixn

docker start ngixn

docker restart ngixn