Docker 在工程運維上的探索


背景

最近組內有同窗用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.node

docker ps -a
複製代碼

此處輸入圖片的描述
列表出容器,而後用

  • docker rm或docker kill等令刪掉容器,
  • docker attach containerName進入容器(容器是啓動的),
  • docker start -i(啓動容器併入進)
docker --help
複製代碼

能夠快速查看docker的命令linux

docker rm containerName
複製代碼

移除container名稱 刪除容器還有git

  • docker stop name
  • docker kill name
  • docker rmi 刪除鏡像
docker pull node
複製代碼

下載安裝最新版本的node的linux系統github

docker run --name koa -v /docker_study/koa-template:/app -p 3000:3000 -i -t node /bin/bash
複製代碼

docker run --help 能夠查看docker run的參數命令docker

實踐

基於上面的命令的解釋,開始一個實例 先在宿機上應射一個本地目錄,在windows上的操做上面的那篇引導文章裏有指出。而後拉代碼到這個目錄npm

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 進行訪問,同時修改源碼裏的內容,訪問的內容就會修改windows

基於上面的實踐

咱們能夠總結出一套用於發佈工程的方法 bash

此處輸入圖片的描述

  • 要發佈工程時,源代碼從指定的gitlab的分支如master上拉代碼下來服務器

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

  • 若是要新開一個測試環境,能夠新作一個image,而後從指定分支拉代碼,在測試容器裏進行測試,效率很高

參考資料

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

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

image
相關文章
相關標籤/搜索