zoukankan      html  css  js  c++  java
  • 使用Docker部署服务

    一、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文件

    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 

  • 相关阅读:
    Linux 介绍了相关的文件夹
    mousewheel 与 DOMMouseScroll
    如何粗略分析关键词的优化难度
    好老师 (第九届湖南大学计算机程序设计竞赛)
    Java程序猿JavaScript学习笔记(14——扩大jQuery UI)
    在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务
    在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
    在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序
    在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序
    在Ubuntu上为Android系统编写Linux内核驱动程序
  • 原文地址:https://www.cnblogs.com/angelatian/p/12650335.html
Copyright © 2011-2022 走看看