上篇《前端也要学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
:
完美,容器里的代码已经跑起来了!