只是学习用,请改用网桥,link模式不推荐了

以下文章来源:https://cloud.tencent.com/developer/article/1554052

容器link原理

===========

在前面一章中,我们使用 --link来将php容器和nginx容器关联在一起,并在nginx容器中的配置写下了如下代码,写下的php001就是我们在–link中设置的别名,其实这是通过本地host实现的。

{try_files $uri =404;fastcgi_pass php001:9000;   #极其重要fastcgi_index index.php;include /etc/nginx/conf.d/fastcgi_params;  #这里也是需要注意的,之前就是在这里还惨我了,需要绝对路径。不然路径默认从nginx的配置目录开始。
}

我们进入容器,并运行

$ cd /etc/
$ vim hosts

便可以看到设置的本地host。

实现灵活切换php版本

我们先拉取两个不同版本的php镜像

$ docker pull php:7.0-fpm
$ docker pull php:7.2-fpm

然后开启两个容器

$ docker run --name php70 -v /home/wwwroot/service_config/php_config:/usr/local/php/etc -v /home/wwwroot/:/home/wwwroot/ -d php:7.0-fpm$ docker run --name php72 -v /home/wwwroot/service_config/php_config:/usr/local/php/etc -v /home/wwwroot/:/home/wwwroot/ -d php:7.2-fpm

注意挂载目录不需要同我的命令一致 自己修改

因为默认都是9000端口 所以不能同时运行 ,创建完一个先stop 创建第二个。需要同时运行的看下面的步骤↓↓↓

运行需要的php版本容器 运行容器后查看容器的ip

$ docker inspect php70

查找以下行 “IPAddress”: “172.17.0.2”,

如果要在nginx使用别名去访问  则需要把hosts文件挂载出来

因为修改了nginx配置需要重启机器,手动修改是没用的。!

接着开启nginx容器,然后进入nginx容器,在nginx的配置文件里修改,(我已经挂载在主机本地目录,详细看前一章节)

{try_files $uri =404;fastcgi_pass 172.17.0.2:9000这里修改了;fastcgi_index index.php;include /etc/nginx/conf.d/fastcgi_params;
}

Esc 然后:wq 保存退出重启即可

$ docker restart nginx001

切换成7.2的步骤:

$ docker stop php70
$ docker start php72
$ docker inspect php72

得到容器运行ip,进入nginx 修改配置 (因为两个容器不是同时运行,当70版本的容器结束,再开启72版本的容器 还是同一个ip 所以不需要修改配置)

假设ip更换了 则需要修改配置然后重启机器

同时运行多个PHP容器

在开启容器的时候需要使用不同的外网ip,因为php-fpm默认监听的是9000端口 所以运行的命令就成了这样子

$ docker run -p 9001:9000 --name php70 -v /home/wwwroot/service_config/php_config:/usr/local/php/etc -v /home/wwwroot/:/home/wwwroot/ -d php:7.0-fpm$ docker run -p 9002:9000 --name php72 -v /home/wwwroot/service_config/php_config:/usr/local/php/etc -v /home/wwwroot/:/home/wwwroot/ -d php:7.2-fpm

这里的9001和9002是你的宿主机没有被占用的端口即可

可以看到两个php容器已经同时可以运行了  $ docker ps

在nginx.conf配置中使用对应容器的ip:9000即可使用对应的PHP版本去编译。

记得修改完IP需要重启nginx!

容器端口号和主机端口号关系的理解

===================

Docker的所有容器都相当于在同一个内网的很多机器

所以每一个容器都有一个ip   每个机器都有自己的端口使用情况   所以不同容器可以使用一样的端口 ,所以我们两个容器都使用php-fpm默认的9000端口并没有冲突。

但是每一个容器都需要映射一个端口到主机上,这个端口是在主机上的,所以不能重复, 我们使用9001和9002。

多容器,Nginx容器灵活切换PHP版本!同时运行多个PHP容器相关推荐

  1. windows7下面sublime中使用virtualenv切换python版本并运行

    环境: win7(64) python2.7(64) python2.7对应的pip安装virtualenv以后 安装python3.5(64)安装的时候记得写入环境变量Path 然后安装虚拟环境: ...

  2. 构建容器Nginx+Tomcat+MySQL

    博文大纲: 一.构建Nginx容器 二.构建Tomcat容器 三.构建MySQL容器 注意:一定要配置宿主机可以连接Internet,因为在构建容器的过程中,很多资源需要去互联网找. 一.构建Ngin ...

  3. 重磅!K8S 1.18版本将内置支持SideCar容器。

    作者:justmine 头条号:大数据与云原生 微信公众号:大数据与云原生 创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处. 为了方便阅读,微信公众号已按分类排版,后续的文 ...

  4. 通过docker-composer启动容器nginx,并完成spring.boot的web站点端口转发

    前面已经讲过2篇基于docker的mysql.redis容器编排并启动.这次将练习下nginx的docker方式的部署,以及通过nginx去代理宿主主机上的Web服务应该怎么配 PS:(这里由于ngi ...

  5. 多版本cuda安装及灵活切换详细教程

    一.首先介绍下我所使用的环境 ubuntu18.04 + 1080ti 二.下载安装包 1.cudatoolkit下载 ①环境选择,想要多版本共存的,尽量选择runfile文件进行安装 ②有些cuda ...

  6. Docker——使用docker工具管理软件/组件的运行,镜像、容器、数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境

    Docker--使用docker工具管理软件/组件的运行,镜像.容器.数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境 一.docker的安装和卸载 1.卸载 2.安装 3. 导 ...

  7. centos切换jdk版本

    CSDN新首页上线啦,邀请你来立即体验! 旧版 立即体验 博客 学院 下载 更多 论坛 问答 活动 码云 商城 ITeye 极客头条 写博客 发布Chat 登录注册 设置昵称 我的博客 消息(3) 设 ...

  8. docker容器运行mysql持久化_docker容器实现数据持久化的两种方式及其区别

    前言 这篇博文是我对docker实现数据持久化几种方式的特征进行一个总结. 在docker中,它的存储文件系统是在dockerhost上原有的xfs或ext4架设了一层文件系统:overlay2(将此 ...

  9. docker执行容器内的shell_为什么不建议把数据库部署在docker容器内?

    前言 近2年Docker非常的火热,各位开发者恨不得把所有的应用.软件都部署在Docker容器中,但是您确定也要把数据库也部署的容器中吗? 这个问题不是子虚乌有,因为在网上能够找到很多各种操作手册和视 ...

最新文章

  1. php smarty关闭缓存,php+Smarty的缓存操作
  2. Java机器学习库ML之九交叉验证法(Cross Validation)
  3. 新手入坑 java的开发语言环境
  4. SqlServer触发器常用语法AFTER、INSTEAD OF及其详解
  5. necos 分布式配置中心 配置方法 动态修改值 切换生产环境
  6. 揭开,字节跳动全链路压测的实践之路
  7. 《生产实习》实习报告——JAVA大数据工程师
  8. 【全网世界区划最全整理输出之第二部分】全世界所有国家的行政区划整理,省市信息,已按照国家,省,市排好序,可直接复制使用,第二部分到8167行,总条数:21088
  9. 2 Python数据分析 Tushare双均线与金叉死叉日期 Pandas数据清洗 级联操作 合并操作
  10. Android SDK使用迅雷下载方法
  11. GitHub账户注册流程及常见问题解析
  12. 一些PPT演讲前暖场的音乐
  13. STM32【复习串口】
  14. android立体3D效果_Android实现八大行星绕太阳3D旋转效果
  15. 【手绘漫画】图解LeetCode之旋转链表(LeetCode 61题)
  16. MPC、LMPC、LEMPC、NMPC、 NEMPC
  17. 命令行批量删除带某关键字的文件
  18. Windows系统中npm install时遇到npm WARN checkPermissions Missing write access to问题
  19. 高频交流信号采样电路设计
  20. FL Studio 2021.20.20中文版补丁win及mac 音乐制作软件

热门文章

  1. c++ char*初始化_[零食时间]C/C++ 字符串全家桶(字符串表示/定义、字符串输入输出、易错点等)上半桶...
  2. C# 将DataGridView里面的数据提取到DataTable中
  3. 十分钟轻松搞懂CSS的五大定位方式!(建议收藏)
  4. eclipse在调试的时候,打断点可以先打断点进入调试模式,进入调试模式后再打断点。...
  5. Linux下OneinStack一键安装JAVA+PHP+Tomcat+Nginx+MySQL网站环
  6. 利用react-router实现按需加载、登录验证、刷新组件。。。
  7. 皕杰报表和炎黄盈动(AWS BPM)集成 操作手册
  8. 99%学习前端开发都会遇到的问题,百分之百都没绝对意识
  9. 镭速(Raysync)文件传输高可用部署介绍!
  10. oracle约束的相关总结