Docker 在工程運維上的探索

網易考拉前端團隊發表於2018-01-31

背景

最近組內有同學用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怎麼玩

此處輸入圖片的描述
這張圖比較好的說明了宿主機,docker主機,視窗終端三個載體

  • 命令解析
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
複製程式碼
  1. 啟動docker machine
docker-machine ssh default
複製程式碼
  1. mount命令把宿主機的目錄應射到default的docker主機終端上
mount
複製程式碼
  1. 下載node的linux映象
docker pull node
複製程式碼
  1. 啟動容器,/docker_study/koa-template是程式碼目錄,這個目錄會應射到容器的app目錄
docker run --name koa -v /docker_study/koa-template:/app -p 3000:3000 -i -t node /bin/bash
複製程式碼
  1. 在容器裡進入app目錄,安裝應用依賴
npm i
複製程式碼
  1. 啟動應用
node start.js
複製程式碼

docker-machine的ip一般是192.168.99.100 所以上面的應用可以能過 http://192.168.99.100:3000 進行訪問,同時修改原始碼裡的內容,訪問的內容就會修改

基於上面的實踐

我們可以總結出一套用於釋出工程的方法

此處輸入圖片的描述

  • 要釋出工程時,原始碼從指定的gitlab的分支如master上拉程式碼下來

  • 把原來宿主機上的container 重啟一下,工程就部署完成了

  • 如果要新開一個測試環境,可以新做一個image,然後從指定分支拉程式碼,在測試容器裡進行測試,效率很高

參考資料

更多精彩內容,請關注網易考拉前端團隊微信公眾號

ps:廣告一波,網易考拉前端招人啦~~~有興趣的戳我投簡歷

image

相關文章