背景
最近組內有同學用docker在專案中應用,參加了設計分享,分享完後多數同學都是“我是誰,我從哪兒來,我到哪兒去”的一臉懵圈,這技術已經出現有些年頭了,但在我們前端圈裡有實踐應用的還不多,而這也是我第一次參加docker技術在實踐專案中的應用。於是就有了這一篇的學習記錄。
Docker是啥?
- Docker Client:Docker提供給使用者的客戶端。Docker Client提供給使用者的是一個終端,使用者輸入Docker提供命令來管理本地或遠端伺服器。
- Docker Daemon:Docker服務的守護程式。每臺伺服器上只要安裝Docker的環境,基本上就跑有一個後臺程式Docker Daemon, Docker Daemon會接收Docker Client發過來的指令,並對伺服器進行具體操作。
- Docker Image:映象。綠色安裝程式。
- Docker Registry:是 Docker Image的倉庫,就像git倉庫一樣,用來管理Docker映象,提供Docker映象的上傳,下載,瀏覽等,也就Dock Hub.
- Docker Container:Docker 容器。Docker Container是跑專案程式,消耗機器資源,提供服務的地方,Docker Container 通過Docker Images 啟動,在Docker Images的基礎上執行程式碼。 Docker Container提供了系統硬體環境,然後使用Docker Images製作好的系統盤,再加上專案程式碼,就可以執行起來提供服務。
Docker怎麼玩
- 下載、安裝、初遇篇 完整記錄在 windows7 下使用 docker 的過程這個連結,有比較完整的下載引導,適合新手直接安裝docker,這篇隨作者step by step下來,基本都把一個container跑起來
- 命令解析
docker-machine ssh default
複製程式碼
Create and manage machines running Docker. Log into with SSH on default machine.
docker ps -a
複製程式碼
列表出容器,然後用
- docker rm或docker kill等令刪掉容器,
- docker attach containerName進入容器(容器是啟動的),
- docker start -i(啟動容器併入進)
docker --help
複製程式碼
可以快速檢視docker的命令
docker rm containerName
複製程式碼
移除container名稱 刪除容器還有
- docker stop name
- docker kill name
- docker rmi 刪除映象
docker pull node
複製程式碼
下載安裝最新版本的node的linux系統
docker run --name koa -v /docker_study/koa-template:/app -p 3000:3000 -i -t node /bin/bash
複製程式碼
docker run --help 可以檢視docker run的引數命令
實踐
基於上面的命令的解釋,開始一個例項 先在宿機上應射一個本地目錄,在windows上的操作上面的那篇引導文章裡有指出。然後拉程式碼到這個目錄
git clone https://github.com/ltaoo/koa-template.git
複製程式碼
- 啟動docker machine
docker-machine ssh default
複製程式碼
- mount命令把宿主機的目錄應射到default的docker主機終端上
mount
複製程式碼
- 下載node的linux映象
docker pull node
複製程式碼
- 啟動容器,/docker_study/koa-template是程式碼目錄,這個目錄會應射到容器的app目錄
docker run --name koa -v /docker_study/koa-template:/app -p 3000:3000 -i -t node /bin/bash
複製程式碼
- 在容器裡進入app目錄,安裝應用依賴
npm i
複製程式碼
- 啟動應用
node start.js
複製程式碼
docker-machine的ip一般是192.168.99.100 所以上面的應用可以能過 http://192.168.99.100:3000 進行訪問,同時修改原始碼裡的內容,訪問的內容就會修改
基於上面的實踐
我們可以總結出一套用於釋出工程的方法
-
要釋出工程時,原始碼從指定的gitlab的分支如master上拉程式碼下來
-
把原來宿主機上的container 重啟一下,工程就部署完成了
-
如果要新開一個測試環境,可以新做一個image,然後從指定分支拉程式碼,在測試容器裡進行測試,效率很高
參考資料
更多精彩內容,請關注網易考拉前端團隊微信公眾號
ps:廣告一波,網易考拉前端招人啦~~~有興趣的戳我投簡歷