docker基础操作与进阶 - 搭建基于pm2的node环境

这篇具有很好参考价值的文章主要介绍了docker基础操作与进阶 - 搭建基于pm2的node环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、为什么要使用docker

最近遇到一台机器需要部署两个不同版本node的情况,首先就想起了docker,想必还有其他类似环境问题的情况,需要进行项目隔离,而docker正是用来解决这个问题的。

docker的优势就在于环境隔离,相当于可以在一台机器上切割成若干个子机器,而各个子机器之前互不影响,另外docker搭建的项目迁移很方便,不用重复搭建复杂的环境。

2、什么是docker

Docker 是一个开源的应用容器引擎,基于Go语言并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

通俗点说,linux机器可以比作一键比较大的船,而docker可以制造若干个集装箱,而这些集装箱都是封闭的,每个集装箱里面都可以装不同的东西。延伸到项目中就是,docker可以制作若干个镜像,而每个镜像中都可以有不同的node、redis、mysql版本等。这样我们就不需要有若干个服务器来兼容这些情况。

3、docker基础知识

镜像:可以把镜像理解成iso文件,众所周知虚拟机可以把iso文件制作成windows系统,镜像就是生成容器的前提,可以根据DockeFile制作而成

容器:容器就类似于集装箱,docker基于镜像可以生成容器,一般容器就是我们服务的环境了,一般node的容器会集成node版本+pm2

4、搭建docker镜像

搭建docker环境需要依赖Dockerfile文件生成镜像,Dockerfile文件会注入node、pm2等环境配置。

步骤:

编写Dockerfile文件 → 创建镜像 → 推送远程镜像仓库

Dockerfile常用命令:

指令 说明
FROM 指明当前的镜像基于哪个镜像构建
LABEL 标记镜像信息,添加元数据
ARG 定义构建镜像过程中使用的变量
ENV 指定环境变量
VOLUME 创建一个数据卷挂载点
USER 指定运行容器时的用户名或 UID
WORKDIR 配置工作目录
EXPOSE 容器运行时的端口,默认是TCP
ADD 从本地或URL添加文件或压缩包到镜像中,并自动解压
COPY 拷贝文件或目录到镜像中
ONBUILD 创建子镜像时指定自动执行的操作指令
STOPSIGNAL 指定退出的信号值
HEALTHCHECK 配置启动容器如何进行健康检查
SHELL 指定默认 shell 类型
RUN 构建镜像时运行的指定命令
CMD 运行容器时默认执行的命令,如果有多个CMD质量,最后一个生效。
ENTRYPOINT 指定镜像的默认入口命

 

 Dockerfile文件内容

# 基础node镜像,以14.15.0的node镜像为基础搭建其他内容
# 基础镜像可以是本地镜像也可以是远程仓库镜像,例:a.com/common/node:14.15.0
FROM node:14.15.0
LABEL author="zuggs"
LABEL email="zuggs@qq.com"

# RUN命令可以执行命令,安装pm2及pm2-lograte
RUN npm install pm2 -g

RUN pm2 install pm2-logrotate \
  && pm2 set pm2-logrotate:max_size 10G \
  && pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH \
  && pm2 set pm2-logrotate:workerInterval 60 \
  && pm2 set pm2-logrotate:rotateInterval "0 * * * *"

# 运行容器时默认执行命令,建议从外面配置,因为每个项目的pm2脚本可能不一样
# WORKDIR /usr/local/etc/nginx/www/project
# CMD pm2-runtime pm2.json

基于Dockerfile打包镜像

# Dockerfile是上面的配置文件,node_pm2是镜像名称,14.15.0是镜像版本,.代表在当前目录打包
docker build -f Dockerfile -t node_pm2:14.15.0 .

执行情况: docker pm2,docker,容器,运维

镜像打包完成就可以直接推送到远程仓库了,这样在其他机器就可以直接拉到镜像了

dockerhub: https://hub.docker.com/

推送指令(前提需要登录,docker login ...):

# 在项目中标记镜像,node_pm2是本地镜像名称,docker..node_pm2是远程tag名称,14.15.0是版本号
docker tag node_pm2:14.15.0 docker.zuggs.com/common/node_pm2:14.15.0
# 推送远程
docker push docker.zuggs.com/common/node_pm2:14.15.0

 5、启动docker镜像

前面已经手动打包好所需的node镜像了,我们只需要在服务器拉取所需要的镜像就好

拉取镜像(不拉取也行,可以在执行时直接选远程镜像,这样在会先拉取镜像):

docker pull docker.zuggs.com/common/node_pm2:14.15.0

基于本地or远程镜像启动容器

docker run -d --name demo_server \
  --log-opt max-size=10m --net=host \
  -v /usr/local/etc/nginx/www/project:/usr/local/etc/nginx/www/project \
  docker.zuggs.com/common/node_pm2:14.15.0 sh -c \
  'cd /usr/local/etc/nginx/www/project && pm2-runtime start pm2.json'

docker run 常用参数介绍,全部可参考docker官网run配置文章来源地址https://www.toymoban.com/news/detail-666748.html

-d 后台运行容器
--name 容器名称
--log-opt 设置日志文件大小和数量配置,可选max-size和max-file
--net 容器网络选项
  host:容器使用宿主机的IP和端口,--net=host
  container:容器和一个指定的容器共享IP、端口,--net=container:NAME_or_ID
  none:该模式关闭了容器的网络功能,--net=node
  bridge:默认值,此模式会为每一个容器分配、设置IP等,--net=bridge
-v 目录映射,这个容器就可以访问到该目录,宿主机路径:容器挂载路径
-p 端口映射,选择host模式就不需要做端口映射了,本地端口:容器端口
sh -c 容器启动后执行的脚本,Dockerfile未写CMD配置的可以在这里配置

 6、docker常用指令

# 搜索镜像
docker search IMAGE_NAME

# 拉取镜像
docker pull IMAGE_NAME

# 构建镜像
docker build -t tag_name:tag_version .

# 标记镜像
docker tag tag_name:tag_version remote_image:remote_version

# 推送镜像到远程
docker push remote_image:remote_version

# 查看所有本地镜像
docker images

# 删除镜像
docker rmi IMAGE_ID

# 查看所有容器,-a是所有容器,默认只查看运行中容器
docker ps -a

# 运行容器
docker run [options]

# 停止容器
docker stop CONTAINER_NAME | CONTAINER_ID

# 启动容器
docker start CONTAINER_NAME | CONTAINER_ID

# 重启容器
docker restart CONTAINER_NAME | CONTAINER_ID

# 在容器中运行后台任务
docker exec CONATAINER_NAME | CONTAINER_ID [COMMAND]

# 查看容器详细信息
docker inspect CONTAINER_ID | CONTAINER_NAME

# 删除容器
docker rm CONTAINER_ID

到了这里,关于docker基础操作与进阶 - 搭建基于pm2的node环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文教你如何使用Node进程管理工具-pm2

    pm2 是一个守护进程管理工具,它能帮你守护和管理你的应用程序。通常一般会在服务上线的时候使用 pm2 进行管理。pm2 能做的其实有很多,比如监听文件改动自动重启,统一管理多个进程,内置的负载均衡,日志系统等等,下面就让我们看下 pm2 是如何使用的吧 首先我们先创建一个简

    2023年04月25日
    浏览(41)
  • PM2 vs Kubernetes:在部署 Node.js 服务时使用哪个?

    Node.js 已成为 Web 开发中的热门技术之一,但如果我们想成功地将 Node.js 应用程序交付给用户,我们需要考虑部署和管理这些应用程序。两个常见的选项是 PM2 和 Kubernetes。PM2 是一个用于运行和管理 Node.js 应用程序的进程管理器,它能够创建不间断运行的 Node.js 应用程序,并确

    2024年02月06日
    浏览(41)
  • Nuxt3打包部署到Linux(node+pm2安装和运行步骤+nginx代理)

    最近,我们项目组的工作接近尾声,需要把项目部署上线。由于前端第一次使用Nuxt3框架,后端也是第一次部署Nuxt3项目,所以刚开始出现了很多问题。在我上网搜索很多教程后,得到了基本的流程。 1.服务器安装node.js环境 Nuxt3官方文档 https://nuxt.com/docs/getting-started/installati

    2024年02月11日
    浏览(42)
  • 保姆级阿里云ESC服务器安装nodejs和服务器node服务管理工具PM2安装使用

    默认 /opt 下边 /opt/node 也可建到其他地方,如/usr/local/node 等 创建后切换到文件夹下 cd /opt/node 使用命令下载node wget https://nodejs.org/dist/v18.12.0/node-v18.12.0-linux-x64.tar.xz 或者到node官网下载tar包到本地然后上传到node所在位置 上传 scp命令为 scp node-v18.12.0-linux-x64.tar.xz root@0.0.0.0:/opt/

    2024年02月08日
    浏览(56)
  • 【pm2】pm2的安装与基本命令:

    一、安装: pm2 是 node 进程管理工具 ,可以利用它来简化很多 node 应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,因为在工作中遇到服务器重启后,需要一个个去重新启动每个服务,这样不仅繁琐、效率低,而且容易遗忘开启一些服务。 【PM2 的主要特性】 1、内

    2024年02月13日
    浏览(40)
  • pm2详解

    对于后台进程的管理,常用的工具是crontab,可用于两种场景:定时任务和常驻脚本。关于常驻脚本,今天介绍一款更好用的工具:pm2,基于nodejs开发的进程管理器,适用于后台常驻脚本管理,同时对node网络应用有自建负载均衡功能。官方的说法,pm2 是一个带有负载均衡功能

    2024年02月09日
    浏览(46)
  • pm2设置开机启动

    1、生成开机启动 pm2 服务的配置文件 运行:pm2 startup 命令 执行 2、 pm2 save , 保存当前 pm2 运行的各个应用保存到 /root/.pm2/dump.pm2下,开机重启时读取该文件中的内容启动相关应用。 3、查看配置是否开启:使用命令systemctl status pm2-root.service 官方相关文档:http://pm2.keymetrics.io/

    2024年02月12日
    浏览(43)
  • PM2入门及其常用命令

    进程管理主要是指创建,终止和监控进程。进程管理器主要是用来确保你的应用在启动后能够保持在线 pm2 是 nodejs 的进程管理器,默认支持负载均衡,能够守护进程。还支持查看应用运行时的性能,资源占用情况等 普通启动方式:node index.js,关闭终端就结束进程 node 进程挂

    2024年02月06日
    浏览(39)
  • pm2 运行springboot项目

    注意安装java版本必须和打包的java版本一致 java安装 安装nodejs 通过npm安装pm2 pm2.json 运行 启动项目即可 参考 https://www.bbsmax.com/A/KE5QmgZ35L/ https://blog.csdn.net/Aria_Miazzy/article/details/103895455

    2024年02月09日
    浏览(45)
  • 【软件工具】PM2的常用命令

    PM2的常用命令 PM2是node进程管理工具,可以利用它来简化很多node应用管理 的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。 全局安装,简直不能更简单。   npm install -g pm2 用express应用来举例。一般我们都是通过npm start启动应用,其实 就是调用node ./bi

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包