一、Docker概念

  1、操作系统层面的虚拟化技术

  2、隔离的进程独立于宿主和其它的隔离的进程 - 容器

  3、GO语言开发

  4、特点:高效的利用系统资源;快速的启动时间;一致的运行环境;持续交付和部署;更轻松的迁移

  5、核心:镜像、容器、仓库

二、安装docker

  https://yeasy.gitbooks.io/docker_practice/content/install/mac.html?q=

  按照文档安装docker,并且注册账号,当电脑的右上角出现小鲸鱼的图标,且显示Docker Desktop is running,安装启动成功

三、Docker构建一个Nginx服务器

  1、拉取官方镜像

    docker pull nginx

  2、查看

    docker images nginx

  3、新建文件

    mkdir www

    echo 'hello docker!!' >> www/index.html 
 
  4、启动镜像
    docker run -p 80:80 -v $PWD/www:/usr/share/nginx/html -d nginx 
    80:80代表我的宿主机的端口:容器类的端口
    如果运行结果是一串uuid,那么在浏览器打开http://localhost/会看到
    
  5、查看进程
    docker ps

    docker ps -a // 查看全部

  6、 -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开,eu9是CONTAINER ID 的前三位

    docker exec -it eu9 /bin/bash

  7、停止镜像
    docker stop eu9
 
  8、删除镜像(前提是镜像已经stop)
    docker rm eu9 

  注意️:也可以使用Dockerfile定制镜像

  1、新建Dockerfile文件

1
2
FROM nginx:latest
RUN echo '<h1>Hello, Kaikeba!</h1>' > /usr/share/nginx/html/index.html

  2、定制镜像

    docker build -t mynginx .

  3、运行:-d 守护态运行

    docker run -p 80:80 -d mynginx

五、使用Docker定制node镜像

  1、node项目下新建Dockerfile

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

  2、定制镜像

   docker build -t mynode .

  3、运行:-d 守护态运行

   docker run -p 3000:3000 -d mynode

六、Docker-Compose:部署Mongo + MongoExpress

  添加docker-compose.yml

version: '3.1'
services:
mongo:
image: mongo
restart: always
ports:
- 27017:27017
mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
 mongoose.js代码中添加Mongoose调用
// mongoose.js
const mongoose = require("mongoose");
// 1.连接
mongoose.connect("mongodb://mongo:27017/test", { useNewUrlParser: true }); const conn = mongoose.connection;
conn.on("error", () => console.error("连接数据库失败"));

app.js

// app.js
const mongoose = require('mongoose');
mongoose.connect('mongodb://mongo:27017/test', {useNewUrlParser: true});
const Cat = mongoose.model('Cat', { name: String });
Cat.deleteMany({})
const kitty = new Cat({ name: 'Zildjian' });
kitty.save().then(() => console.log('meow'));
app.use(async ctx => {
ctx.body = await Cat.find()
})

  运行

  docker-compose up

  后台运行

  docker-compose up -d

  强制重新构建并启

  docker-compose up -d --force-recreate --build

使用Docker部署服务的更多相关文章

  1. docker 部署服务时,node(结点)显示no such image

    1. 问题描述 ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 9cn5x84lnmga getstartedlab_web.1 ...

  2. Docker | 部署nginx服务

    容器时相互隔离的,docker启动的nginx是容器内的服务,不影响我原先服务器上的nginx服务,小伙伴们可大胆尝试 本篇实在linux环境下操作的,主要目的是夺人眼目,对使用Docker部署服务尝 ...

  3. docker部署rockermq集群(docker-compose版本)

    此处采用docker-compose部署 rockermq主主集群模式 创建相关文件夹 此处创建的文件一一对应docker-compose.yml文件中的映射文件夹,酌情创建,主要需要创建配置文件夹. ...

  4. Docker Swarm Mode 学习笔记 (部署服务)

    使用 docker service 命令来管理 Swarm 集群中的服务,该命令只能在管理节点上执行. 新建服务 docker service create --replicas 3 -p 80:80 ...

  5. docker swarm 部署服务时,限制服务启动后所在的机器

    借助容器技术,可以方便的在不同环境下部署服务,保证服务环境的一致性.docker swarm这个东西,可以方便的对容器进行编排管理. docker swarm集群中,有manager节点与worker ...

  6. 教你使用docker部署淘宝rap2服务

    什么是rap2 先来说说起因,在上一个星期的分享会上,谈到前后端联调上,有同事提到了rap2,特意去了解了一下,觉得使用这个东西来进行前后端的接口联调来真是太方便了,对比我们之前公司内部开发的API ...

  7. docker swarm英文文档学习-8-在集群中部署服务

    Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运 ...

  8. 【docker】docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志

    如题: docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志 场景再现: docker部署并启动 ...

  9. Docker部署微服务

    部署时需要注!意!: 打开防火墙对应的应用端口!!用于外部访问!!内部互访问则不需要. 和对应数据库,缓存,消息中间件服务等的端口(当然这些服务必须先开启,它们也可使用docker部署开启) ,用于容 ...

  10. 零基础用Docker部署微服务

    1. docker架构 这里的Client和DOCKER_HOST(docker server)都是在本地的,docker仓库Registry是在远程的: Client的docker命令通过Docke ...

随机推荐

  1. 一步一步abp电商模块-1、搭建模块环境

    前言 目前在开发abp电商模块,打算做一步,写一步,算是对自己的记录,主要是参考nopcommoner 并结合abp模块开发 知识都是连贯的,如果你熟悉asp.net core 3.x.abp(非vN ...

  2. Java API 之 Object

    Object 顶级父类.任何一个类都将 Object 作为父类,也就意味着任何一个对象都可以赋值给 Object 对象.Object 类也是 Java 中唯一的一个没有父类的类. (方法默认是 pub ...

  3. 高性能的RTC服务器OpenFire

    <高性能的RTC服务器OpenFire>-第一章部署与源码调试 前言 OpenFire是什么,以及它能做什么?或许这是许多开发人员最关心的一个话题.简单来说,OpenFire是一个采用纯J ...

  4. weixueyuan-Nginx在Kubernetes10

    https://www.weixueyuan.net/nginx/kubernetes/ Kubernetes(k8s)分布式容器管理系统简述 Kubernetes 是分布式容器管理系统,它提供了对容 ...

  5. 加速 AI 训推:Lepton AI 如何构建多租户、低延迟云存储平台

    Lepton AI 是一款面向开发者的 AI 平台,旨在提供易用.高效且可扩展的基础设施能力.该平台适用于各种训练.推理需求,GPU充足,在保证高性能的同时,能够灵活应对不断变化的工作负载.用户可以快 ...

  6. 密码学报如何正确Latex投稿?

    记录一下<密码学报>投稿遇到的坑,要不研究一下,投稿都不会投!(死在第一步) 模版地址 http://www.jcr.cacrnet.org.cn/CN/column/column13.s ...

  7. linux:lamp环境

    关于LAMP LAMP搭建 安装php和Apache 先装php,因为安装php有apache的依赖包 yum install php 启动Apache service httpd start 启动成 ...

  8. 拒绝繁忙!免费使用 deepseek-r1:671B 参数满血模型

    相信大家都已经有体验过deepseek-r1的强大推理能力,由于其网页版本免费使用的原因,用户量激增.同时据传还遭受了大量的网络攻击,这使得过程不是很流程,经常收到类似下图的问题: 同时,API服务也 ...

  9. 流程控制之do while循环

    语法 do {    //代码语句}while(布尔表达式): 与while的区别 while是先判断再执行,do while是先执行再判断 循环体至少会被执行一次 实例1: package com. ...

  10. [JOISC 2023 Day3] Tourism 题解

    大家好,我喜欢珂朵莉树,所以我用珂朵莉树 \(AC\) 了本题. 实际上,我们比较容易发现,这题实际上就是求 \([l,r]\) 中的所有点作为关键点时,虚树所压缩的所有点(实际上就是显现出来的点+在 ...