上篇《前端也要學Docker啊!》介紹了 Docker 及它的三個主要概念:Image(鏡像)、Container
(容器)、Registry(倉庫) 以及Docker安裝。前端
本篇咱們來動手實踐:在本地建立一個本身的鏡像(Node應用),使用該鏡像建立容器並執行容器中的Node應用。node
在根目錄建立index.js
docker
//index.js const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello Docker O(∩_∩)O~~'; }); app.listen(3000);
建立 Docker 鏡像須要用到 docker build
命令,而docker build
命令又是根據 Dockerfile 配置文件來構建鏡像,因此咱們要在項目根目錄建立一個 Dockerfile 文件:npm
#Dockerfile FROM node:10.13-alpine #項目的基礎依賴 MAINTAINER chenLong #項目維護者 COPY . . #將本機根目錄全部文件拷貝到容器的根目錄下 這個能夠根據喜愛調節路徑 EXPOSE 3000 #容器對外暴露的端口 RUN npm i #安裝node依賴 CMD npm start #在容器環境裏執行的命令
你能夠到 Docker 官網查看詳細的Dockfile說明json
上面 Node 代碼已經完成了,咱們使用 yarn init -y
或 npm init -y
完成package.json
初始化,而後安裝一個koa
依賴:執行yarn add koa
或 npm i koa
。segmentfault
而後咱們在本地跑一下 node 程序:node index.js
,打開瀏覽器輸入 localhost:3000 ,能夠看到瀏覽器中成功顯示了 Hello Docker O(∩_∩)O~~ 。瀏覽器
程序沒問題,咱們開始構建這個鏡像,執行命令:docker build -t docker-demo/hello-docker:v1 .
(注意最後有個 .
是必須的)app
--tag
簡寫,鏡像的名字及標籤,一般 name:tag 或者 name 格式;能夠在一次構建中爲一個鏡像設置多個標籤。上面的 docker-demo/hello-docker
是咱們定義的鏡像名稱,v1
是標籤名稱(相似版本號)koa
圖中藍色框表示 Dockerfile 的執行步驟。此時一個名爲docker-demo/hello-docker
的鏡像已經建立完成了,如今咱們執行docker images
查看一下:async
表示本地的鏡像列表中已經有了咱們剛纔建立的docker-demo/hello-docker
上面已經建立好了鏡像,裏面包含着咱們寫的代碼,如今咱們須要把代碼運行起來。
很是簡單,咱們使用docker run
命令使用鏡像建立一個容器實例(此刻腦海中浮現 var p1 = new Person() )。
咱們執行命令: docker run -i -t -p 8080:3000 docker-demo/hello-docker:v1
打開瀏覽器,運行localhost:8080
:
完美,容器裏的代碼已經跑起來了!