docker三個核心概念如下:* 映象(images):乙個唯讀的模板,可以理解為應用程式的執行環境,包含了程式執行所依賴的環境和基本配置。相當於上圖中的每個小箱子裡面裝的東西。
* 倉庫(repository):乙個用於存放映象檔案的倉庫。可以看做和gitlab一樣。
* 容器(container):乙個執行應用程式的虛擬容器,他和映象最大的區別在於容器的最上面那一層是可讀可寫的。 相當於上圖中的每個小箱子裡。
* docker官網
首先建立乙個空資料夾。並建立以下檔案:server.js
package.json
dockerfile
.dockerignore
命令如下:
mkdir docker_demo
cd docker_demo
touch server.js
touch package.json
touch dockerfile
touch .dockerignore
const koa = require('koa');
ctx.body = 'hello docker';
});
,"dependencies":
}
npm start
建立dockerfile檔案
dockerfile是由一系列命令和引數構成的指令碼,乙個dockerfile裡面包含了構建整個image的完整命令。docker通過docker build執行dockerfile中的一系列命令自動構建image。在.dockerignore檔案裡面寫入**。表示過濾該型別的檔案。類似git的.gitignore。
# logs
logs
*.log
npm-debug.log*
# runtime data
pids
*.pid
*.seed
# directory for instrumented libs generated by jscoverage/jscover
lib-cov
# coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# grunt intermediate storage (
.grunt
# node-waf configuration
.lock-wscript
# compiled binary addons (
build/release
# dependency directories
node_modules
jspm_packages
# optional npm cache directory
.npm
# optional repl history
.node_repl_history
.idea
.node_modules
node_modules
.vscode
在dockerfile檔案中寫入以下**:#制定node映象的版本
from node:8.9-alpine
#宣告作者
maintainer robin
#安裝依賴
run npm install
#對外暴露的埠
expose 3000
#程式啟動指令碼
cmd ["npm", "start"]
構建映象
使用build命令構造映象,注意後面那個.不能少。
docker build -t docker_demo .
robin:docker_demo robin$ docker build -t docker_demo .
sending build context to docker daemon 39.94kb
step 1/7 : from node:8.9-alpine
---> 406f227b21f5
step 2/7 : maintainer robin
---> using cache
---> 78d6cdbcfee2
---> 2cb30678612d
removing intermediate container e51377081039
---> c2b7d0f37d2d
step 5/7 : run npm install
---> running
in da0c3946ca8d
npm notice created a lockfile as package-lock.json. you should commit this file.
added 38 packages in 3.323s
removing intermediate container da0c3946ca8d
---> eecee87f10e2
step 6/7 : expose 3000
---> running
in f3973cc168a4
removing intermediate container f3973cc168a4
---> 2671a4c6deb4
step 7/7 : cmd ["npm", "start"]
---> running
in dec529f754aa
removing intermediate container dec529f754aa
---> 6ec73793d353
successfully built 6ec73793d353
successfully tagged docker_demo:latest
docker images
#啟動映象 -d表示後台執行,-p 9000:3000表示指定本地的9000埠隱射到容器內的3000埠,docker_demo為映象名稱
docker run -d -p 9000:3000 docker_demo
#檢視容器
docker ps
附:docker常用命令 基於Docker部署nodejs應用
docker hub中有官方node映象,按照自己的需求直接獲取對應版本的image即可。我獲取的是8.0 alpine版本,因為基於alpine的node映象足夠小,僅有63.7 mb。從原始碼庫上,獲取到整個源 工程。過程略 首先,我們確立文件模型。目錄結構如下 nodejs order nod...
docker部署nodejs專案應用
之前筆者弄了一套nestjs專案放在自己伺服器上,並用pm2管理程序。現在要把pm2停止,嘗試一下用docker容器,那麼首先要安裝docker 由於筆者伺服器的系統是centos7,所以這裡寫的是在centos7上安裝docker 我們可以用以下命令來檢視centos版本 uname r官方源位址...
docker容器化部署nodejs應用
使用 dockerfile 建立映象 bossnodejs test v1.0.1 映象名稱 v版本號 空格 點 dockerfile 檔案所在目錄,可以指定dockerfile 的絕對路徑 docker build t bossnodejs test v1.0.1 標記本地映象,將其歸入某一倉庫 ...