Docker筆記2——儲存自己的LNMP

fyydnz發表於2020-07-28

作為一名伺服器開發者,平時學習、工作中難免需要配置自己的伺服器環境、甚至不同的專案需要不同的自定義環境;Docker技術的誕生,可以很好地將我們需要的伺服器環境打包起來,以避免重複配置或配置出錯導致的各種伺服器錯誤;本章就來實現並記錄一下:如何將自定義的Docker容器打包成映象,實現環境的移植和重複使用。

注:如果對docker還不太理解,或者一些基礎命令還需要講解的,請先看一下-》 Docker筆記1——入門(初識+搭建+使用):部落格:Docker筆記1——入門(初識+搭建+使用)

虛擬機器環境:centos7

一、進入docker容器

//安裝docker
$ yum -y install docker 
//啟動服務
$ systemctl start docker
//從docker映象庫拉取centos7映象
$ docker pull centos:centos8.2.2004
//檢視映象
$ docker images
//執行容器
$ docker run -itd --name centos-one centos:centos8.2.2004
//檢視容器
$ docker ps
//進入容器
$ docker exec -it [容器ID:57cb4276a2f9] /bin/sh  

Docker筆記2——儲存自己的LNMP
PS:如果到在這之前卡住了,請先參考:Docker筆記1——入門(初識+搭建+使用):部落格:Docker筆記1——入門(初識+搭建+使用)

二、在容器裡搭建lnmp

2.1、安裝並啟動nginx

//安裝nginx
$ yum install nginx
//啟動nginx,如果找不到自己的nginx啟動指令碼,可以用find / -name nginx
$ ./usr/sbin/nginx 
//測試nginx
$ curl 127.0.0.1 

Docker筆記2——儲存自己的LNMP

Docker筆記2——儲存自己的LNMP

2.2、安裝PHP

//安裝PHP
$ yum install php

Docker筆記2——儲存自己的LNMP

2.3、準備一個php檔案用作校驗

$ cd /usr/share/nginx/html
$ echo "<?php phpinfo();" >> index.php

2.4、啟動fpm

//找到fpm
$ find / -name php-fpm
//啟動fpm
$ /usr/sbin/php-fpm
//檢視程式
$ ps -aux | grep php-fpm

Docker筆記2——儲存自己的LNMP

2.5、配置nginx關聯fpm

//找到nginx.conf
$ find / -name nginx.conf
location ~ \.php(.*)$ {
    fastcgi_pass   127.0.0.1:9000;
}

Docker筆記2——儲存自己的LNMP

// 重啟nginx
$ ./usr/sbin/nginx -s reload
// 測試一下
$ curl 127.0.0.1:80/index.php

Docker筆記2——儲存自己的LNMP

三、儲存容器

// 退出容器
$ exit;
// 檢視容器
$ docker ps
// 根據容器id生成映象(-m 映象名 -a 作者名 [容器id] [新容器標籤])
$ docker commit -m 'my_lnmp' -a 'guoqf' 57cb4276a2f9 centos:guoqf_lnmp
// 用save命令將映象儲存
$ docker save centos:guoqf_lnmp > /root/guoqf_lnmp.tar

Docker筆記2——儲存自己的LNMP

Docker筆記2——儲存自己的LNMP

四、測試映象

4.1、刪除映象並重啟docker

// 刪除映象
$ docker rmi 
// 重啟docker服務
$ systemctl restart docker

Docker筆記2——儲存自己的LNMP

4.2、執行容器

// 匯入映象
$ docker load < gqf_lnmp.tar
// 執行容器
$ docker run -itd --name centos-4 centos/guoqf_lnmp:latest
// 進入容器
$ docker exec -it [容器ID] /bin/sh 

4.3、重新啟動fast-cgi、lnmp(命令上面有,這裡就不再重複寫了)

4.4、檢視容器ip地址

$ ifconfig
$ exit

Docker筆記2——儲存自己的LNMP

4.4、通過宿主機器訪問服務

Docker筆記2——儲存自己的LNMP

4.5、通過外網IP訪問服務

Docker筆記2——儲存自己的LNMP

這個時候發現docker的服務並不能直接暴露在外,經過一番瞭解後,docker的網路原理大致如下圖:

Docker筆記2——儲存自己的LNMP
查閱資料之後,發現我們可以在生成容器的時候,進行一個(宿主機與容器的)埠對映,也就是在run命令後面加 -p

五、埠對映

宿主機:

$ docker run -itd --name centos-4 -p 80:80 centos/guoqf_lnmp:latest

Docker筆記2——儲存自己的LNMP

最後再試下訪問:

Docker筆記2——儲存自己的LNMP

至此,我們已經學會了如何用docker搭建自己的專案執行環境並將環境儲存起來,以便進行後續的移植和快速搭建;
這種方式是將映象儲存在自己的伺服器中,隱祕性和安全性相對比較高,單機操作成本較低;
下一期我們再研究下如何用dockerfile的方式,將自己的映象上傳,以便應對伺服器叢集環境的快速搭建吧!~

參考文獻&工具庫:

1)dockerHub
2)教你如何修改執行中的docker容器的埠對映
3) Docker安裝一個LNMP全過程

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章