一、什么是Dockerphp
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操做系统层面的虚拟化技术。html
通俗来讲,Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,能够把货物规整的摆放起来。而且各类各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不须要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就能够用一艘大船把他们都运走。docker就是相似的理念。mysql
二、使用Docker的好处linux
在服务器环境中,因为如今的物理服务器的配置都是较为强大的,若是用物理服务器配置只跑一个小服务是很是浪费的,而跑多个服务,又会致使相互影响,致使安全等风险增长,故须要一个个的容器,把每个服务隔离开来,让它们只使用本身那部分有限的资源以及本身依赖的软件包。在Docker出现以前,是靠虚拟机来实现的,可是每一个虚拟机都要装本身的操做系统核心,这是对资源有点浪费。因而就有了Docker, 一个机器上能够装十几个到几十个docker,他们共享操做系统核心,占用资源少,启动速度快。nginx
在开发环境中也带来了不少的方便,好比开发环境和生产环境的差别,依赖关系的管理等都变得简单了很多。sql
三、搭建流程docker
docker的安装请参阅官网,本机环境方面,给本身的笔记本和台式都安装了,系统分别是 ubuntu 16.04 和 windows10ubuntu
一、mysql的安装与配置vim
1. 拉取镜像windows
docker pull mysql:5.7
完成后可使用 docker images 查看拉取得镜像
2. 运行镜像来建立容器
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name db_mysql mysql:5.6
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-e 设置环境变量,这里是设置mysql的root用户的初始密码
–name 容器的名字
建立成功后可使用 docker ps 查看运行中的容器。
3. 相关配置
docker exec -ti db_mysql /bin/bash
-t 在容器里生产一个伪终端
-i 对容器内的标准输入 (STDIN) 进行交互
进入到mysql容器后,能够对mysql建立一个能够远程访问的用户,而后就能够远程访问了。
二、php-fpm的安装与配置
1.拉取镜像
docker pull php:7.0-fpm
2.建立容器
#ubuntu docker run -d -v /home/zoujiejun/workspace/www:/var/html/www -p 9000:9000 --link db_mysql:mysql --name php70_fpm #windows docker run -d -v /workspace:/var/html/www -p 9000:9000 --link db_mysql:mysql --name php70_fpm
-v 添加目录映射,即主机上的/var/nginx/www/html和容器中/var/www/html目录是同步的
–link 与另一个容器创建起联系,这样咱们就能够在当前容器中去使用另外一个容器里的服务。(如上述命令可使用 mysql 来访问前面mysql容器)
若是是在windows系统,且是用virtualbox的安装方式,还须要在virtualbox的虚拟机设置中把共享文件夹的路径修改一下,从这里能够看出来,windows运行的是一个假docker- -就是一个linux虚拟机而后再跑docker。
3.配置
进入容器后,安装一个扩展。
docker-php-ext-install pdo-mysql
安装完成后使用 php -m 查看全部扩展。成功之后来搞nginx。
三、nginx的安装与配置
1.拉取镜像
docker pull nginx:1.12
2.建立容器
#ubuntu docker run -d -v /home/zoujiejun/workspace/www:/var/html/www -p 80:80--link php70_fpm:phpfpm--name z_nginx nginx:1.12 #windows docker run -d -v /workspace:/var/html/www -p 80:80 --link php70_fpm:phpfpm --name z_nginx nginx:1.12
3.配置
因为nginx配置要打字比较多,先装一个vim把。
apt update apt install vim
vim /etc/nginx/conf.d/default.conf
四、测试
<?php try { $con = new PDO('mysql:host=mysql;dbname=docker_test', 'zoujiejun', '123456'); $con->query('SET NAMES UTF8'); $res = $con->query('select * from key2value'); while ($row = $res->fetch(PDO::FETCH_ASSOC)) { echo "key:{$row['key']} value:{$row['value']}"; } } catch (PDOException $e) { echo $e->getMessage(); }
运行结果: