准备:

需要5个文件

新建一个docker文件夹

1 .ignore git忽略文件用的

2 pakage.json 安装NODE程序的 也可以直接拷贝进 docker文件加

3 node环境 linux版本

4 node程序

5 dockerfile配置文件

package可以有也可以没有

此处分为两种:

一种是node程序在git上

一种是直接拷贝到docker程序中

为了简便我用的是第二种

dockerfile配置如下:

FROM centos:latest

ENV NPM_CONFIG_LOGLEVEL info

# NODE版本
ENV NODE_VERSION 4.5.
# XCLOUD版本
ENV XCLOUD_VERSION 1.0. # linux node at https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.x
# e.g, curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz"
#此处将node环境拷贝进docker 在linux中需要编译安装,在docker中只需将其考进去便可以,考到root/app中 这个文件对外看不到
COPY ./node-v4.5.0-linux-x64.tar.xz /
COPY ./node_modules/am-privatecloud /root/app RUN tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components= \
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" \
#此处不明白为什么多了一个连接????
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs # 进入工作目录
WORKDIR /root/app # 安装项目依赖
RUN npm install # 启动项目
ENTRYPOINT ["node"]
CMD ["-v"] # 开放30000端口
EXPOSE

在虚拟机上按照型号安装好docker ;

1、将上面的docker文件拷贝到虚拟机上,进入目录运行

docker build -t yunshipei/private-xcloud:1.0.0 .

参数含义
-t yunshipei/private-xcloud:1.0.0 镜像名字为yunshipei/private-xcloud,tag为1.0.0
. 代表当前目录,即Dockerfile所在目录

生成docker镜像 即images

2、 测试镜像docker run --rm yunshipei/private-xcloud:1.0.0,如果输出v4.5.0说明容器没有问题。

参数含义
--rm 容器停止后删除容器
yunshipei/private-xcloud:1.0.0 镜像名:tag
这里没有指定启动命令,这时自动命令是Dockerfile中配置的ENTRYPOINT + CMD即node -v。如果指定了命令,指定的命令就会替换掉CMD的默认命令。

3、 启动容器

docker run -d --name xcloud -e "NODE_ENV=production" -v /root/xcloud:/root/app/static --restart=always -p : yunshipei/private-xcloud:1.0. /root/app/bin/www

此处注意 末尾 /root/app/bin/www 启动文件

参数含义: -d 以后台进程方式启动
--name xcloud容器名字为xcloud
-e "NODE_ENV=production" 设置环境变量NODE_ENV=production
-v /root/xcloud:/root/app/static 本地/root/xcloud(任意指定)目录映射到容器内的/root/app/static(不能变)目录(用户存放拉取下来的allmobilize.min.js)
--restart=always 如果进程异常退出总是自动重启
-p 30000:30000 将主机的30000端口映射到容器内的30000端口
yunshipei/private-xcloud:1.0.0 镜像名:tag
/root/app/server.js 启动命令(实际全部的启动命令为 node /root/app/server.js,因为在Dockerfile中已经设置了ENTRYPOINT为node)

4、 查看容器状态docker ps -a,找到Name是xcloud查看器状态。如果STATUS是UP说明容器正常启动了。

参数含义
ps -a 查看所有容器 查看名字是xloud的容器

如果配置完成,外网不能访问。那么检查一下本地系统的转发支持

sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

如果是0表示没有开启,则需要手动打开

sysctl -w net.ipv4.ip_forward=1    

以上设置在重启后就不生效了,想要永久生效需要在/etc/sysctl.conf找到net.ipv4.ip_forward部分设置为1(如果没有,在最后追加一项)

net.ipv4.ip_forward = 1

然后运行sysctl -p

镜像的导入导出

在机器上第一次编译镜像时间比较慢(首次编译如果本地没有镜像缓存,还要去中央仓库拉取依赖的镜像),另外新机器也可能没有权限去拉取Git上面的项目。在这种情况下在本地把镜像编译后,导出来,分发给客户镜像压缩包。客户那边直接装载这个导出的镜像即可。

镜像导出

docker save yunshipei/private-xcloud:1.0.0 | gzip -c > xcloud-100.tar.gz   

参数含义:
导出命令为docker save
yunshipei/private-xcloud:1.0.0 镜像名:tag
| gzip -c > xcloud-100.tar.gz 输出重定向到gzip执行压缩,然后输出到 xcloud-100.tar.gz文件中

镜像导入

gunzip -c xcloud-100.tar.gz | docker load                      

参数含义:
docker load 为导入镜像命令
gunzip -c xcloud-100.tar.gz解压镜像压缩包输出到标准输出
| docker load 重定向标准输出到docker load

docker制作node程序镜像:的更多相关文章

  1. docker制作自己的镜像并上传dockerhub

    1.首先注册自己的dockerhub账号,注册地址:https://hub.docker.com 2.在linux服务器登录自己的账号:docker login --username=qiaoyeye ...

  2. centos7使用docker制作tomcat本地镜像

    1.安装Docker 安装docker前请确认当前linux的内核版必须是3.10及以上 命令: uname  -r 1).yum install -y yum-utils device-mapper ...

  3. 使用 Docker 部署 Node 应用 - 镜像文件尺寸的优化

    前面 使用 Docker 部署 Node 应用 一文中完成了镜像的创建和运行,不过生成的镜像还有些粗糙,需要进一步优化. 镜像的优化 通过 docker images 看到简单的一个 node 服务端 ...

  4. docker制作jdk+tomcat镜像

    docker部署TOMCAT项目 一.内核升级 [root@test01 ~]# uname -r   #内核查看确认 2.6.32-696.16.1.el6.x86_64 [root@test01 ...

  5. Docker 制作自己的镜像

    1. 下载tomcat镜像 docker pull hub.c.163.com/library/tomcat:latest 2. 创建Dockfile vi Dockerfile from hub.c ...

  6. docker学习7-Dockerfile制作自己的镜像文件

    前言 如果你是一个python自动化测试人员,某天你在公司终于完成了一个项目的接口自动化脚本工作,在你自己常用的本机或者服务器上调试完成了脚本,稳稳地没问题. 可是晚上下班回家,你自己找了个linux ...

  7. 【ASP.NET Core分布式项目实战】(五)Docker制作dotnet core控制台程序镜像

    Docker制作dotnet core控制台程序镜像 基于dotnet SDK 新建控制台程序 mkdir /home/console cd /home/console dotnet new cons ...

  8. Docker Java程序镜像制作

    Docker Java程序镜像制作 制作前的准备 jre:不需要完整的jdk,jre即可,到Oracle进行下载即可,下载链接,根据自己的情况进行选择,这里选择jre-8u221-linux-x64. ...

  9. 制作nodejs项目镜像,实现docker下的快速部署

    前言 前面的文章<centos7+ docker1.12 实践部署docker及配置direct_lvm>中,已经实践了如何在centos7下安装,配置docker, 所以接下来就打算去制 ...

随机推荐

  1. Python 函数 切片 迭代 列表生成器

    函数 编写     定义一个函数要用def语句    def sum(i,n):   ⚠有冒号 返回多值     实际上是返回一个tuple 定义默认参数    默认参数的作用是简化调用   def ...

  2. 创建以 API 为中心的 Web 应用

    http://www.oschina.net/translate/creating-an-api-centric-web-application?from=20130818 正计划着要开始搞一个新的网 ...

  3. 软件看门狗--别让你地程序无响应(使用未公开API函数IsHungAppWindow,知识点较全)

    正文一.概述一些重要的程序,必须让它一直跑着:而且还要时时关心它的状态——不能让它出现死锁现象.当然,如果一个主程序会出现死锁,肯定是设计或者编程上的失误.我们首要做的事是,把这个Bug揪出来.但如果 ...

  4. Inno Setup:卸载时判断要调用的dll是否存在

    原文 http://zwkufo.blog.163.com/blog/static/2588251201072581947474/ [Code]function SuiteRemovedAlert2: ...

  5. Java application 性能分析分享

    性能分析的主要方式 监视:监视是一种用来查看应用程序运行时行为的一般方法.通常会有多个视图(View)分别实时地显示 CPU 使用情况.内存使用情况.线程状态以及其他一些有用的信息,以便用户能很快地发 ...

  6. Google map v3 using simple tool file google.map.util.js v 1.1

    /** * GOOGLE地图开发使用工具 * @author BOONYACHENGDU@GMAIL.COM * @date 2013-08-23 * @notice 地图容器的z-index不能小于 ...

  7. hdu 4686 Arc of Dream_矩阵快速幂

    题意:略 构造出矩阵就行了 |   AX   0    AXBY   AXBY       0  |                                                   ...

  8. hdu 5623 KK's Number(dp)

    问题描述 我们可爱的KK有一个有趣的数学游戏:这个游戏需要两个人,有N\left(1\leq N\leq 5*{10}^{4} \right)N(1≤N≤5∗10​4​​)个数,每次KK都会先拿数.每 ...

  9. POJ 3678 Katu Puzzle(2 - SAT) - from lanshui_Yang

    Description Katu Puzzle is presented as a directed graph G(V, E) with each edge e(a, b) labeled by a ...

  10. 《Effective C++》:条款46-条款47

    条款46请输入转换的时候,需要定义非模板成员函数 条款47请使用traits class表现类型信息 条款46:须要类型转换时请为模板定义非成员函数 条款 24提到过为什么non-member函数才有 ...