1. 程式人生 > >Docker工程環境搭建及介紹

Docker工程環境搭建及介紹

最近在做服務端相關的開發,由於服務機是Linux系統,所以具體開發環境就要相對應,原生代碼能夠及時同步到伺服器進行執行。其實能夠實現這個功能有多種方法像安裝Vagrant、Virtualbox等,各有千秋,具體的簡單比較下文有,這裡先介紹Docker環境。是到,剛才聊到也是Docker的功能之一。
Docker主要有四個部分:

1、客戶端;2、守護程序;3、映象;4、容器;

Docker是基於LXC(是一種核心虛擬化技術,可以提供輕量級的虛擬化,以便隔離程序和資源。)進行擴充套件開發,但LXC存在的問題是難以移動 - 難以通過標準化的模板製作、重建、複製和移動 container,這裡Docker 利用了AUFS(支援將不同目錄掛載到同一個虛擬檔案系統下(unite several directories into a single virtual filesystem)的檔案系統)來實現對container的快速更新。 這裡的一些專業名詞我最後補上百科連結。
百度百科這樣介紹Docker:

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。
(這裡讓我想起OSX 沙盒機制,這也是mac很少中毒的原因之一吧。)
其中不得不說映象和容器的關係,借個圖展示:

這裡寫圖片描述

下面介紹一下服務端工程搭建過程:
1、安裝Docker環境

MAC
https://www.docker.com/docker-mac
WINDOWS
https://www.docker.com/docker-windows
安裝成功,檢查docker engine,docker compose,docker machine版本號
這裡寫圖片描述


其中composer是php組建,負責組織包與包之間的依賴,在專案中通過composer.json和composer.luck進行載入及管理包。
這裡寫圖片描述
2、新增開發環境映象

curl -o centos-6.8-x86_64-php-7.1-XXX-dev.tar http://XXXXXX/docker/centos-6.8-x86_64-php-7.1-XXX-dev.tar && docker load -i centos-6.8-x86_64-php-7.1-XXX-dev.tar
新增映象如圖:
這裡寫圖片描述
3、啟動Nginx-Proxy代理

建立本地開發環境docker Network:
$ docker network create nginx-proxy
啟動Nginx-Proxy映象,該映象將監控上一步建立的nginx-proxy network內的所有新VIRTUHOST新增,並自動增加反向代理
docker run -d -p 80:80 –name nginx-proxy –net nginx-proxy –restart always -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy
4、啟動專案服務

git clone {專案git地址} {本地專案目錄}   # 拷貝程式碼倉庫到本地目錄 cd {本地專案目錄} # 進入本地目錄
d o c k e r c o m p o s e u p f o r c e r e c r e a t e r e m o v e o r p h a n s d docker ps # 檢視執行的容器
$ docker exec -it {container_name} sh # 登入進容器

到此為止,基本環境已經搭建完畢,接下來就是在nginx中、hosts、docker映象virtual_host中分別新增專案域名(注意nginx更改後及時更新,且docker重啟後鏡像conf檔案更改將回退);

啟動容器及更改nginx、更新如圖:
這裡寫圖片描述

這裡寫圖片描述

現在本地IDE的程式碼將會及時同步到遠端,其中有些具體細節省略了,如果有個別小疑問可以小窗我,有些情況可能還會涉及到跳板機等,其他的下節再介紹。共同學習,進步!

LXC: https://baike.baidu.com/item/LXC
AUFS:https://baike.baidu.com/item/Docker/13344470?fr=aladdin