天天看點

docker 為自己的應用建立 container

參考資料

Docker 入門教程-阮一峰

官方文檔

1、在項目目錄下建立一個

.dockerignore

檔案。

// .dockerignore
.git
node_modules
npm-debug.log
           

上面代碼表示,這三個路徑要排除,不要打包進入 image 檔案。

2、在項目目錄下建立一個

Dockerfile

檔案,編輯自己的操作。

// Dockerfile
FROM	node:12.12.0

WORKDIR	/usr/src/app
COPY	package.json .
RUN		npm install
COPY	. .
CMD		["npm", "start"]

           
  • FROM node:12.12.0:該 image 檔案繼承官方的 node image,冒号表示标簽,這裡标簽是12.12.0,即12.12.0版本的 node。
  • WORKDIR 指定容器中的工作目錄是/usr/src/app
  • COPY 複制目前目錄下的到容器的工作目錄下
  • RUN 在工作目錄下執行指令
  • CMD 在主控端執行指令

3、建立 image 檔案

在指令行執行

docker build image -t [name] [path]

// eg
$ docker image build -t jianshu .
           

-t 用來指定 image 的名字

name 自定義的 image 名字

path Dockerfile 檔案所在的路徑

// 檢視 image 清單
docker images

// 删除 image,填寫 image ID
docker rmi [IMAGE ID] // docker rmi 50a0b6e611eb
           

4、生成容器 (container)

docker container run --publish [host port:container port] --detach --name [name] name

// eg
$ docker container run --publish 8000:8080 --detach --name js jianshu 
           

–publish 要求Docker将主機端口8000上傳入的流量轉發到容器的端口8080(容器有自己的端口集,如果我們想要通過端口通路,需要用這種方式轉發流量。否則,作為預設的安全狀态,防火牆規則将阻止所有網絡流量到達您的容器)

–detach 要求Docker背景運作此容器

–name 為容器自定義命名

// 檢視 container 清單
docker container ls

// 停止 contaienr,container name
docker contaienr stop [name] 

// 删除 cotainer
docker contaier rm [name]