Docker 从入门到实战,从零部署 Node + MongoDB + Redis 项目

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

看完这篇文章你能了解到什么?

  • 了解常见的 Docker 知识
  • 利用 Docker 快速跨平台部署后端( Node.js + MongoDB + Redis + Nginx ) 项目
  • 一些常见的 Linux 系统操作
  • 编写 Dockerfile 文件
  • 编写 docker-compose 文件
  • 编写 一些常见的 nginx 配置文件

PS

这里主要讲的是利用容器化的方式去部署项目,容器化部署的好处有很多哈,比如容器可以很方便从一台电脑迁移到另一台电脑。

Docker 是什么?

简单一句话就是一个应用打包、分发、部署的工具,可以把它理解为一个轻量的虚拟机,但是是以容器的方式运行的。

支持各种系统 Linux,MacOS,Windows等。可以使用容器化部署以降低项目在不同的平台之间进行部署的成本。

再也不会出现 “怎么在我的电脑能运行,到了服务器就运行不了” 这种情况。

Docker 基本概念

使用 Docker 前需要先了解这几个基本概念

  • 镜像(image)
  • 容器(container)
  • 仓库(repository)

获取镜像的方式可以通过 Dockerfile 文件创建,也可以通过 dockerHub 仓库下载

  • Docker 中镜像容器的关系就像  与 实例 的关系
  • 镜像可以通过 Dockerfile 文件来生成,容器通过镜像来创建

Docker 使用国内镜像加速

Linux 系统

vim /etc/docker/daemon.json

Windows 系统,找到 daemon.json 文件并打开修改

C:\Users<你的用户名>.docker\daemon.json 文件

然后修改里面的 registry-mirrors 字段,可以添加多个源地址。可以在下载镜像的时候加速

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

Hello world

Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序

docker run ubuntu:15.10 /bin/echo "Hello world"

安装一个 ubuntu 15.10版本的容器,并在容器中输出hello world,如果本地不存在该容器就会从远程仓库下载,相当于你在 Docker 容器内安装了一个 ubuntu 系统的虚拟环境,可以在里面执行各种Linux的指令。

交互式容器

相当于可以在容器虚拟环境中打开控制台。

放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash

docker run -i -t ubuntu:15.10 /bin/bash
# 或者
docker run -it ubuntu:15.10 /bin/bash
  • -t: 在新容器内指定一个伪终端或终端。
  • -i: 允许你对容器内的标准输入 (STDIN) 进行交互。
  • -d: 让容器在后台运行,输入后不进入交互模式
  • -p:表示暴露端口
  • 在控制台中输入exit退出

如果输入了-d 参数,会让容器后台运行,那么怎么进入到容器中呢?

一个是docker attach 容器ID命令,如果从这个命令进入到容器中后,再输入exit会把整个容器也退出,不再维持后台运行的状态。

另一个是docker exec -it 容器ID /bin/bash命令回到容器中,执行这个命令在容器中输入exit不会把整个容器也退出,容器仍将维持后台运行状态。

Docker状态

输入指令docker ps -a可以查看所有的容器。

如果要恢复一个已经停止的容器可以输入docker start 容器ID,同样的,想要停止一个容器可以输入docker stop 容器ID。

另外还有docker restart 容器ID 命令用于重启容器

容器的状态有7种:

  • created(已创建)
  • restarting(重启中)
  • running 或 Up(运行中)
  • removing(迁移中)
  • paused(暂停)
  • exited(停止)
  • dead(死亡)

删除一个容器

docker rm -f 容器ID

清理列表中所有终止状态的容器

docker container prune

查看镜像

删除镜像

docker rmi 镜像仓库源
# 比如说要删除上面的test v0.0.1版本
docker rmi test:v0.0.1

获取镜像

当使用docker run命令来运行本地不存在的镜像时会自动下载镜像,但也可以使用docker pull命令来

docker 下 pnpm node环境 pnpm 本机环境 昨天还好好的,今天就无法使用了。最后用docker 一样的环境才成功。 阅读详情

相关推荐

win10下docker部署nginx+node+mongodb+redis学习

环境介绍 docker的好处有很多,这里就不多说了,win10上安装docker要求是专业版的win10,而我们一般买的是家庭版的,家庭版可以通过激活码升级成专业版,至于激活码,读者们可以去某宝买,不贵。当然win10家庭版上也可以通过一些复杂的配置让其能跑docker,这个可以自行百度。 我这里假定读者们已经在win10中安装并配置好docker,这里我就简单的说一下我的docker配置吧。 ...

天极小强的博客 1042

[Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb

Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 6567

Docker部署安装应用大集合(Tomcat、Nginx、MysqlRedis、MQ、Nacos、Zookeeper、Portainer、MongoDB ......)

部署Tomcat、Nginx、MysqlRedisRedis集群、web应用、Node、Rabbitmq、安装ActiveMQ、RocketMQ、Minion对象存储服务、 zookeeper、dobbo-admin、Portainer、Canal、MongoDB、单机Nacos、Sentinel、Haproxy、Gitlab、PostgreSQL

积跬步,至千里。 4811

nodejs操作redis总结

本文总结常见的使⽤node操作redis服务,redis的key是唯一的,如果一个key所对应的存储类型是string,则不能再次覆盖式设置key为hash; 1. 启动redis 1. 这里我们使用docker方式搭建redis服务器 docker run -d --name redis -p 6379:6379 redis:2.8 2. 初始化 1. node操作redis需要引⼊redis包; const redis = require('redis'); const client = red...

u012632105的博客 7841

Docker构建Node.js应用镜像

app.js${PORT}运行查看:http://127.0.0.1:3000/

彭世瑜的博客 3224

NoDock vs 传统部署:为什么Docker Compose是Node项目的未来

NoDock是一个基于Docker Compose的Node项目部署解决方案,集成了NodeMySQLRedisMongoDB、NGINX、Apache2、Memcached、Certbot和RabbitMQ等多种服务镜像,为Node.js应用提供了一站式的容器化部署体验。 ## 🚀 传统部署的痛点:为什么Node项目需要变革? 传统的Node项目部署方式往往面临着环境一致性、依赖管理

gitblog_01052的博客 458

Build Node.Js web server in Docker containers: nodejs+pm2+mongodb+redis

Build Node.Js web server in Docker containers: nodejs+pm2+mongodb+redis环境 系统环境 centos 6.5 64bit docker v1.7.1 下载使用镜像[root@dss ~]# docker search node # 搜素镜像 NAME DESCRIPTION

SS 6270

NoDock数据库配置:MySQLMongoDBRedis的最佳实践

NoDock是一个专为Node.js项目设计的Docker Compose解决方案,集成了MySQLMongoDBRedis等主流数据库服务。本文将详细介绍如何在NoDock环境中配置和优化这三种数据库,帮助新手用户快速搭建稳定高效的开发环境。 [![NoDock数据库架构图](https://raw.gitcode.com/gh_mirrors/no/nodock/raw/16c89cdb

gitblog_00428的博客 714

10分钟上手NoDock:Node.js开发者必备的Docker容器化解决方案

NoDock是一个专为Node.js项目打造的Docker容器化解决方案,集成了NodeMySQLRedisMongoDB、NGINX等多种开发所需服务,让开发者能够快速搭建完整的开发环境。通过Docker Compose技术,NoDock实现了一键部署,大大简化了Node.js项目的配置和部署流程。 ## 📦 核心功能与优势 NoDock作为一款完整的Docker容器化解决方案,为N

gitblog_00053的博客 1086

Node.js Backend Architecture Typescript Docker部署实战:从开发到生产

Node.js Backend Architecture Typescript 是一个生产级博客平台后端解决方案,集成了Express.js、Mongoose、RedisMongodb等技术栈,支持基于角色的访问控制、JWT认证和完整的单元测试。本文将带你从开发环境到生产部署,通过Docker实现一站式部署流程,让你快速掌握企业级Node.js应用的容器化实践。 ## 📋 项目架构概览 在

gitblog_01076的博客 436

NoDock多容器部署指南:轻松管理Node.js微服务架构

NoDock是一款专为Node.js项目打造的Docker Compose解决方案,集成了NodeMySQLRedisMongoDB、NGINX等多种服务镜像,让开发者能够轻松构建和管理复杂的微服务架构。无论是新手还是有经验的开发者,都能通过NoDock快速搭建稳定高效的开发环境。 ## 📦 核心功能与优势 NoDock提供了一站式的容器化解决方案,主要优势包括: - **多服务集成

gitblog_01159的博客 962

Node.js应用Docker Compose容器化开发实战

容器化是解决多环境不一致问题的核心技术范式,其本质是通过声明式配置实现运行时环境的可复现与隔离。基于Linux内核namespace/cgroups的Docker提供轻量级进程沙箱,而Docker Compose则进一步将单容器扩展为服务编排系统,支持依赖顺序、网络互通与跨平台卷挂载。在Node.js全栈开发中,它显著降低MongoDB数据库本地部署门槛,规避Windows服务注册失败、Ubuntu权限配置错误等高频痛点。本文聚焦开发阶段工程实践,详解如何用docker-compose.yml统一管理No

weixin_33716941的博客 343

NoDock完全指南:如何用Docker Compose一键搭建Node.js全栈开发环境

想要快速搭建Node.js全栈开发环境吗?NoDock是你的终极解决方案!这个强大的Docker Compose工具包让开发者在几分钟内就能搭建起完整的Node.js开发环境,包含MySQLRedisMongoDB、NGINX、Apache2、Memcached、Certbot和RabbitMQ等所有必需组件。无论你是前端开发者想要快速启动后端服务,还是全栈工程师需要完整的开发栈,NoDock

gitblog_00444的博客 684

Full Stack FastAPI MongoDB终极指南:Docker容器化部署全攻略

🚀 想要快速构建现代化的全栈Web应用?Full Stack FastAPI MongoDB项目为你提供了完美的解决方案!这个强大的项目生成器集成了FastAPI、React和MongoDB三大技术栈,让你在几分钟内就能搭建起一个生产就绪的Web应用。本文将为你详细介绍如何使用Docker容器化技术部署这个全栈应用,从本地开发到生产环境的完整流程。 ## 🎯 什么是Full Stack Fa

gitblog_01177的博客 864

使用 Docker 部署高可用 MongoDB 分片集群

首先我们先来了解一下 Mongo 集群的概念,Mongo 集群有 3 个主要组件 Mongos、ConfigServer、Shard,Mongos 是一个路由,他们的信息都存储在 ConfigServer 中,我们通过 Mongos 进行添加,然后根据条件将数据进行分片到分片的副本集中。

github_38616039的博客 3237

Node.js REST API开发:从设计到部署的完整项目实战

想要构建高性能的RESTful API服务吗?Node.js提供了完美的解决方案!😊 本文将带您从开始,完成一个完整的Node.js REST API项目实战,涵盖从设计到部署的全过程。Node.js REST API开发已成为现代Web开发的核心技能,无论是构建微服务、移动应用后端还是企业级应用接口,Node.js都能提供卓越的性能和开发体验。 ## 🚀 Node.js REST API

gitblog_00976的博客 1098

ARL资产侦察平台源码部署实战:从Docker到裸机Ubuntu的完整指南

在现代DevOps和安全运维领域,容器化部署因其环境隔离和快速部署的优势成为主流,但特定场景下,如资源受限、合规要求或深度定制需求,仍需回归传统的源码部署方式。其核心原理在于绕过容器抽象层,直接在操作系统上搭建应用运行所需的全套技术栈,包括编程语言环境、数据库、消息队列和Web服务器等。这种部署方式的技术价值在于提供了极致的环境控制力和透明度,便于性能调优、深度调试和满足严格的安全管控要求。在安全资产测绘、内部渗透测试等应用场景中,当无法使用Docker时,掌握从源码部署复杂应用的能力至关重要。本文以ARL

weixin_30298497的博客 379
上一篇: Docker容器之镜像仓库详解
下一篇: 面试官:MySQL权限表损坏导致无法启动怎么办?
十一技术斩
博客等级 码龄4年 4512粉丝 · 487原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值