使用docker搭建lnmp環境


Docker容器LNMP環境搭建

安裝

系統環境

  • 硬件型號: ThinkPad T520
  • 系統版本: ubuntu 14.04
  • CPU: i7
  • RAM: 8G

添加軟件源

由於Ubuntu源中的最先版本為0.9無法滿足要求,所以需要使用Docker的官方源
添加密鑰:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys \
36A1D7869245C8950F966E92D8576A8BA88D21E9

源地址: deb http://get.docker.io/ubuntu docker main
添加源可以通過"軟件和更新->其它軟件->添加"來操作
添加后執行如下命令:

$ sudo apt-get update
$ sudo apt-get install lxc-docker-1.1.1

注: 官方給出的源地址為https連接的,但是總是出現ssl驗證失敗的錯誤,最后改為非
ssl連接之后正常

 

測試

執行如下命令獲取容器鏡像,創建一個實例並打開一個實例shell

$ sudo docker run -t -i centos:latest /bin/bash

注:第一次運行由於需要下載鏡像可能需要多等一會兒
運行成功后會有一個新的shell提示符

 


制作鏡像

要求

  • web容器安裝Nginx+PHP服務
  • 數據庫容器安裝Mysql服務
  • web服務和數據庫分離
  • web服務容器可以訪問數據庫容器

制作nginx+php鏡像

啟動一個容器實例:

$ sudo docker run -t -i centos:latest /bin/bash

安裝nginx與PHP:
Nginx可以使用源碼或rpm包進行安裝,PHP可以使用源碼或yum安裝.具體安裝和配置這里
不進行具體講述.

注:需要把nginx與php-fpm添加到系統服務中並設置開機啟動
我設置的站點根目錄為/opt/web

退出shell並執行如下命令制作鏡像:

$ sudo docker commit -m="web service image nginx+php" -a="username" \
sudo docker ps -lq username/web:v1

這是一個組合命令:
sudo docker commit根據已有實例制作鏡像
sudo docker ps -lq返回最后一個運行的實例id
已有鏡像可以使用sudo docker images 查看
至此創建了第一個鏡像 username/web:v1

 

制作mysql鏡像

啟動實例:

$ sudo docker run -t -i centos:latest /bin/bash

安裝Mysql.
設置Mysql服務開機啟動:

$ chkconfig mysqld on

啟動mysql.
修改mysql登陸權限:

mysql> grant all privileges on . to 'root'@'%' identified by 'dbpasswd';
mysql> flush privileges;

mysql服務默認只能本地連接,制作鏡像的時候需要注意.否則是無法連接到數據庫的.

退出shell並執行如下命令制作mysql容器鏡像:
$ sudo docker commit -m="mysql service image" -a="username" \
sudo docker ps -lq username/mysql:v1

清除不再需要的實例:

$ sudo docker rm sudo docker ps -aq

 

啟動並關聯實例

web實例依賴與mysql,所以先打開一個mysql實例:

$ sudo docker run -d --name db username/mysql:v1 /sbin/init

-d參數是讓實例以dameon的形式運行. /sbin/init是創建實例后執行的操作,此處為初
始化系統服務,包括運行mysql.

啟動web實例並與數據庫實例進行關聯:

$ sudo docker run -d --name web --link db:db -p 8080:80 -v /path/to/src:/opt/web username/web:v1 /sbin/init

--link參數設置關聯的容器,可以設置多個.關聯之后會自動更新web容器的host,把db
的地址指向到數據庫容器的地址.
-p 參數用來進行ip映射.此處把容器的80端口映射到了本地的8080端口.web服務可是
通過localhost:8080訪問.
-v 參數把數據掛載到容器指定目錄.此處為把站點源碼目錄掛載到容器的站點目錄.
在web容器中訪問數據庫容器的mysql服務可以使用db這個主機地址.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM