有学有练才叫学习:学而不思则罔,思而不学则殆:学而不习,纸上谈兵,习而不进,画地为牢!

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

服务端 炮渣日记 3周前 (11-15) 39次浏览 已收录 0个评论 扫描二维码
Docker是非常流行的容器化部署方案,具有简单化、高稳定性等特点,在实际的产品交付、实施中非常实用。

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

系统环境:win7

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

一、安装docker

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

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

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

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

二、创建docker镜像

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

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

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

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

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

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

docker安装nodejs(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(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安装创建镜像加载并运行NodeJS程序)详细步骤

三、启动镜像

docker run -d -p 9000:3000 appdemo

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

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

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

Nodejs程序启动成功。

常见问题

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

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

解决方法是:

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

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

然后再启动,即可正常:

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

查看运行中的容器:docker ps

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

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

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

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

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

导出镜像文件:

先用docker images查看镜像

docker安装nodejs(Docker安装创建镜像加载并运行NodeJS程序)详细步骤

再用保存命令:

Docker save 1265bfee9a56 G:appdemo.tar

docker安装nodejs(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)
炮渣日记
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址