DOCKER的结构

还可参考:其他笔记1

docker run参数,docker-compose.yml配置

docker restart 多个容器 docker容器多开_html

docker run参数

组织和编排docker容器

结构如下:

docker restart 多个容器 docker容器多开_docker restart 多个容器_02


如在容器1时MYSQL,访问172.27.0.2的3306端口。

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

例子1:首先创建一个docker容器nginx。(80:80)

docker restart 多个容器 docker容器多开_java_03

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

查看ip信息用host

docker restart 多个容器 docker容器多开_php_04


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 restart 多个容器 docker容器多开_docker_05

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

例子2:1新建,2映射,3进入映射容器,4安装curl,5curl myng(得到nginx的首页内容,myng等同于域名172.17.0.2)

–link A:B将一个容器A(他的域名)映射到另一个容器B ,即myng映射到alpine。

docker restart 多个容器 docker容器多开_docker_06


原理:修改hosts文件里,myng直接映射172.17.0.2,

docker restart 多个容器 docker容器多开_docker restart 多个容器_07

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

例:创建nginx容器到php容器到mysql容器的多容器项目

docker restart 多个容器 docker容器多开_java_08

创建的时候要先创建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 restart 多个容器 docker容器多开_docker restart 多个容器_09


test.php

docker restart 多个容器 docker容器多开_docker restart 多个容器_10


mysql.php

docker restart 多个容器 docker容器多开_java_11


接着:

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

docker restart 多个容器 docker容器多开_docker restart 多个容器_12


location /{}: 将html文件映射到新建的html。

location ~ .php$ (~表示正则), php后缀的走9000端口,

docker restart 多个容器 docker容器多开_java_13


最后:

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

结果产生三个容器,root目录下的serves,1表示第一个compose,可以建多个

docker restart 多个容器 docker容器多开_php_14


docker restart 多个容器 docker容器多开_docker_15

docker-compose.yml 如下:

原理:访问根目录index.html,读取nginx的’/'配置,…

访问mysql.php,会去找dbhost主机地址,进入mysql容器,得到数据返回mysql.php

docker restart 多个容器 docker容器多开_docker restart 多个容器_16

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 restart 多个容器 docker容器多开_php_17


docker restart 多个容器 docker容器多开_html_18

测试

访问80端口,看根目录

docker restart 多个容器 docker容器多开_html_19

访问/test.php,显示了php.info

docker restart 多个容器 docker容器多开_docker_20

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

docker restart 多个容器 docker容器多开_docker_21