Docker容器及多容器项目docker-compose

DOCKER的结构

还可参考:其他笔记
1
docker run参数,docker-compose.yml配置
Docker容器及多容器项目docker-compose_第1张图片

docker run参数Docker容器及多容器项目docker-compose_第2张图片

组织和编排docker容器

结构如下:
Docker容器及多容器项目docker-compose_第3张图片
如在容器1时MYSQL,访问172.27.0.2的3306端口。

下面介绍一个例子,是两个容器相连接。

例子1:首先创建一个docker容器nginx。(80:80)
在这里插入图片描述

常用命令:
$ docker ps //查看运行中的容器
$ docker exec -it mynginx         //(id或者前三个数字) bash 进入容器`在这里插入代码片`
$ exit     //退出容器
$ docker rm -f      //***删除id为***的容器
¥clear     //清空命令

查看ip信息用host
Docker容器及多容器项目docker-compose_第4张图片
fce76…为宿主机id,172.17.0.2为容器ip。
接着另一个容器:$ docker run -dit alpine(alpine为大小5M的linux系统)

$ docker run -dit alpine               //(alpine为大小5m的linux系统)
$ docker exec -it     //***(前三个主机号)  sh 进入容器
$ apk add curl  //安装curl
$ curl 172.17.0.2  

可以获取到上一个容器的nginx(即直接查看Ip进入容器访问)
Docker容器及多容器项目docker-compose_第5张图片

下面这种是相比例1简单和更快

例子2:1新建,2映射,3进入映射容器,4安装curl,5curl myng(得到nginx的首页内容,myng等同于域名172.17.0.2)
–link A:B将一个容器A(他的域名)映射到另一个容器B ,即myng映射到alpine。
Docker容器及多容器项目docker-compose_第6张图片
原理:修改hosts文件里,myng直接映射172.17.0.2,
Docker容器及多容器项目docker-compose_第7张图片

构建配置文件,组织一个多容器项目docker-compose

例:创建nginx容器到php容器到mysql容器的多容器项目
Docker容器及多容器项目docker-compose_第8张图片

创建的时候要先创建mysql,因为创建php之前必须要有link mysql,创建nginx需要link php。
首先:

$ mkdir conf    //创建第一个目录存放修改后的nginx配置文件,因为要解析php,
$ mkdir html    //存放html和php文件
$ cd html/
$ vim index.html    //创建index.html  进入后写完wq退出(w保存,q退出)
$ vim test.php    //创建test测试php是否成功!  wq退出
$ vim mysql.php   //访问mysql(参考mysql php语法)

Docker容器及多容器项目docker-compose_第9张图片
test.php
在这里插入图片描述
mysql.php
Docker容器及多容器项目docker-compose_第10张图片
接着:

$ cd ../conf/      //进入文件夹
$ vim nginx.conf     //修改conf文件

Docker容器及多容器项目docker-compose_第11张图片
location /{}: 将html文件映射到新建的html。
location ~ .php$ (~表示正则), php后缀的走9000端口,
Docker容器及多容器项目docker-compose_第12张图片
最后:

$ cd    //根目录
$ vim docker-compose.yml   //修改dockercompose,docker——compose如下。
$ docker-compose up -d  //  -d后台启动
$ docker ps  //查看

结果产生三个容器,root目录下的serves,1表示第一个compose,可以建多个
在这里插入图片描述
在这里插入图片描述

docker-compose.yml 如下:
原理:访问根目录index.html,读取nginx的’/'配置,…
访问mysql.php,会去找dbhost主机地址,进入mysql容器,得到数据返回mysql.php
Docker容器及多容器项目docker-compose_第13张图片

version: "3"
	services:
	 	nginx:
	 		image: nginx:alpine  //配置镜像
	 		ports: //端口  -p参数
	 		-80:80
	 		volumes:  //目录  -v参数
	 		- /root/html:/usr/share/nginx/html    //创建的html映射到nginx/html,**nginx容器中的是非php文件访问用的html**
	 		- /root/conf/nginx.conf:/etc/nginx/nginx.conf   //配置文件  conf映射nginx.conf  
	 	php:
	 		image: devilbox/php-fpm:5.2-work-0.89   //要到dockerhub下载,devilbox/php-fpm为镜像名称:5.2-work-0.89为版本
	 		volumes:
		 	- /root/html:/var/www/html    //创建的html映射到www/html , **php文件会到php容器中访问的html**
	 	mysql:
	 	image: mysql:5.6  //版本
	 	environment:  
	 	- MYSQL_ROOT_PASSWORD=123456    //设置环境变量:mysql容器启动必须配置的参数

Docker容器及多容器项目docker-compose_第14张图片
Docker容器及多容器项目docker-compose_第15张图片

测试

访问80端口,看根目录

在这里插入图片描述

访问/test.php,显示了php.infoDocker容器及多容器项目docker-compose_第16张图片

访问/mysql.php,出现mysql connected!!

在这里插入图片描述

你可能感兴趣的:(Web)