一、什麼是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(); }
運行結果: