Docker使用入门:安装、创建镜像、加载并运行NodeJS程序。

Docker是非常流行的容器化部署方案,具有简单化、高稳定性等特点,在实际的产品交付、实施中非常实用。

本文从docker的安装、使用,以及一个nodejs实例程序,从零入手,演示docker的实际使用全过程,并附有使用过程中常见问题的解决办法。

系统环境:win7

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

一、安装docker

从Docker官网下载并安装docker-ToolBox,并安装

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

安装完毕,出现三个图标:

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

二、创建docker镜像

Docker可以通过Dockerfile文件内容来动构建镜像。

Dockerfile是一个包含创建镜像所有命令的文本文件,使用docker build命令可以根据其内容构建镜像。

示例,创建一个NodeJS程序的Docker镜像:

1、新建目录并在cmd中npm init进行初始化。

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

2、创建一个demo程序,内容如下:

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

最终各必须文件:

Dockerfile文件内容:

#制定node镜像的版本
FROM node:12
ADD . /app/
#进入到app目录下面,类似cd
WORKDIR /app
#安装依赖
RUN npm install
#对外暴露的端口
EXPOSE 3000
#程序启动脚本
CMD ["npm", "start"]

Demo.js文件内容:

const express = require('express')
const app = express()
app.get('/', function (req, res) {
res.send('Hello World!')
})
app.listen(3000, function () {
console.log('Example app listening on port 3000!')
})

安全提示:

如果是正式的产品发布,或向客户提交,为防止镜像中的源代码被获取,可以用JShaman 对代码进行混淆加密,以起到保护JS代码的效果。(JShaman是个专业的JS代码加密平台。)

如,以上代码经JShaman保护后会成为如下密文,而且不影响正常运行。

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

Package.json文件内容:

{
"name": "docker_demo",
"version": "1.0.0",
"description": "",
"main": "demo.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node demo.js"
},
"author": "wangliwen",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}

此外,package-lock.json文件必须存在,且有内容,即使用过npm i -save,文件被写入过内容。

制作镜像:

使用build命令构造镜像,注意后面那个.不能少。

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

三、启动镜像

docker run -d -p 9000:3000 appdemo

注: -d表示后台执行,-p 9000:3000表示指定本地的9000端口映射到容器内的3000端口,appdemo为镜像名称。

如要进行调试,可不加-d启动。

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

Nodejs程序启动成功。

常见问题

如果启动docker及虚拟机时,提示错误如"创建Com对象失败":

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

解决方法是:

在Docker Quickstart Terminal、Oracle VM VirtualBox快键方式的"兼容性"中选择兼容模式运行(winserver 2008),并选中"以管理员身份运行"。

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

然后再启动,即可正常:

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

查看运行中的容器:docker ps

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

win7 下 docker 端口访问问题,如本例中启动后如何访问?当然是通过ip加端口,但此时用ipconfig获得的ip是错误的。如:

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

而需要用docker-machine ip default命令才能看到docker容器的真实ip:

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

导出镜像文件:

先用docker images查看镜像

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

再用保存命令:

Docker save 1265bfee9a56 G:\\appdemo.tar

Docker使用:安装、创建镜像、加载并运行NodeJS程序

 

加载时,可再用docker load命令,反向操作即可。

更多docker命令:

1、列出所有容器ID
docker ps -aq
2、停止所有容器
docker stop $(docker ps -aq)
3、删除所有容器
docker rm $(docker ps -aq)
4、删除所有镜像
docker rmi $(docker images -q)
5、按条件删除镜像(没有打标签)
docker rmi `docker images -q | awk '/^<none>/ { print $3 }'`             # //镜像名包含关键字
docker rmi --force `docker images | grep doss-api | awk '{print $3}'`    # 其中doss-api为关键字
6、复制文件
docker cp mycontainer:/opt/file.txt /opt/local/
docker cp /opt/local/file.txt mycontainer:/opt/
7、查看当前内核版本
uname -r
8、关闭防火墙,暂时关闭和永久关闭
systemctl stop firewalld 暂时关闭
systemctl disable firewalld 永久关闭
9、安装docker
# yum install docker-ce
10、暂时启动并开机永久启动
systemctl start docker
systemctl enable docker
11、查看docker版本 查看是否安装成功
docker version

总结

以上即完成了docker从零入手学习,实践使用的全过程。希望能帮助到使用docker的各位。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值