1. 拉取镜像
docker pull php:7.4-fpm # 以 PHP 7.4 为例
docker pull nginx:latest
docker pull mysql:8.0
2. 创建网络
docker network create -d bridge my-network# -d:让容器在后台以守护进程模式运行
3. 运行 MySQL 容器
docker run -d --name mysql8.0 --network my-network -e MYSQL_ROOT_PASSWORD=root mysql:8.0
4. 运行 PHP-FPM 容器
# -v:将宿主机目录或文件挂载到容器中,实现数据持久化
docker run -d --name php7.4 -v /path/to/app:/app --network my-network php:7.4-fpm
5. 运行 Nginx 容器
docker run -d --name nginx -p 80:80 -v /path/to/app:/app --network my-network nginx
6. 配置 Nginx
编辑 Nginx 默认配置文件,将 fastcgi_pass 指向 PHP 容器的 IP(通过 docker inspect php7.4 | grep IPAddress 获取)。
三、验证环境
访问 http://localhost,若显示 PHP 信息页则环境搭建成功。
四、docker小知识
1、端口映射(推荐方式)
通过 -p 参数将容器端口映射到宿主机端口,外部网络通过访问宿主机的 IP 和映射端口来访问容器服务2。
示例命令:
docker run -d -p 宿主机端口:容器端口 镜像名
- 作用:将容器的
容器端口映射到宿主机的宿主机端口。 - 访问方式:外部网络通过
宿主机的IP:宿主机端口访问容器服务2。 - 高级用法:
- 绑定特定 IP:
-p 127.0.0.1:宿主机端口:容器端口(仅限本地访问)。 - 随机映射:使用
-P参数,Docker 会随机分配宿主机的高端口(49000-49900)。
- 绑定特定 IP:
2、网络模式
通过 --net=host 启动容器,容器直接使用宿主机的网络栈,无需端口映射即可通过宿主机的 IP 访问容器服务
Docker创建网络的核心目的是实现容器间的高效通信、隔离性管理以及与外部网络的灵活交互,尤其在微服务架构和分布式部署中至关重要。
容器间通信需求
现代应用(如微服务)通常由多个独立服务组成(如Web前端、数据库等),这些服务需在容器中运行并相互调用。Bridge网络通过虚拟交换机为容器分配独立IP,实现同一主机内容器的直接通信,避免端口冲突。
外部网络访问
Web服务(如Nginx)需暴露端口供外部访问。Host网络模式可直接使用宿主机IP和端口,但牺牲隔离性;Overlay网络则支持跨主机通信,适合Swarm或Kubernetes集群。
安全与隔离
None网络模式提供无网络环境,适用于离线任务;自定义网络允许通过ACL等机制控制访问权限,提升安全性。
性能优化
Host模式无NAT开销,适合高性能场景;Container模式共享网络栈,减少资源消耗。
《docker中安装php运行环境》 是转载文章,点击查看原文。