zoukankan      html  css  js  c++  java
  • 使用Docker分分钟启动常用应用

    前言

      Docker是目前比较火的一个概念,同时也是微服务中比较关键的一个容器化技术。但是,单从理论上好难看出Docker的优势,因此,我希望在这篇文章中提供一些Docker的使用示例,希望从实际应用上帮助大家理解Docker的优势,同时也对自己的Docker使用进行简单的记录。

    目录

      准备事项

      一、启动.Net Core

      二、启动静态Html

      三、启动Mysql

      四、启动MongoDB

      五、启动Redis

      六、启动RabbitMQ

      七、启动Nginx

      八、启动Eureka

      九、启动Config Server

    准备事项

      1. 安装Docker

      我使用的操作系统是CentOS 7/7.1,如何安装Docker,可以参考园子里的这篇文章:《Centos安装Docker》

      2. Docker加速

      Docker的标准镜像库Docker Hub在国外,不进行Docker加速的话拉取镜像会比较慢,这里我使用道客(DaoCloud)来进行Dokcer加速。在“配置Docker加速器”里有配置加速的指令:

      

      在Linux中进行配置

      执行sudo su -,获取root权限,如果本身是root帐号,可跳过: 

      

      执行道客的配置指令:

      

      执行systemctl restart docker,重启Docker:

      

    一、启动.Net Core

      1. 拉取dotnet标准镜像,镜像地址:https://hub.docker.com/r/microsoft/dotnet/

      2. 拉取镜像:docker pull microsoft/dotnet

      

      3. 执行docker images查看已下好的镜像

      

      4. 新建一个.Net Core HelloWorld程序并发布

      

      5. 准备Dockerfile,并把Dockerfile拷贝到HelloWorld程序同级目录。注:.Net Core运行的默认端口是5000,这里通过环境变量的方式把端口修改为8080

    FROM microsoft/dotnet:latest
    COPY . /app
    WORKDIR /app
    
    EXPOSE 8080/tcp
    ENV ASPNETCORE_URLS http://*:8080
    
    ENTRYPOINT ["dotnet", "HelloWorld.dll"]
    

      

      6. 定位到程序目录,执行指令把HelloWorld程序打包成Docker镜像

      docker build -t hello-world:1.0 .

      

      

      7. 运行Docker容器

      docker run --name hello-world -p 8080:8080 -d hello-world:1.0

      

      8. 检查结果

      

    二、启动静态Html

      1. 拉取Nginx官方镜像,镜像地址:https://hub.docker.com/_/nginx/

      2. 拉取镜像:docker pull nginx

      3. 准备html程序,可以使用我之前的一个Durandal的示例:https://github.com/ErikXu/DurandalDemo

      

      4. 准备Dockerfile,并把Dockerfile拷贝到Html程序同级目录。注:程序中需要有一个入口页面,如index.html

    FROM nginx:latest
    COPY . /usr/share/nginx/html
    

      

      5. 定位到程序目录,执行指令把Html程序打包成Docker镜像

      docker build -t html:1.0 .

      

      6. 运行Docker容器,注:这里把容器中的80端口映射到虚拟机的81端口

      docker run --name html -p 81:80 -d html:1.0

      

      7. 检查结果

      

    三、启动Mysql

      1. 拉取官方镜像,镜像地址:https://hub.docker.com/_/mysql/

      2. 拉取镜像:docker pull mysql

      3. 准备Mysql数据存放目录,我这里是:/home/erikxu/mysql

      4. 执行指令启动Mysql

      docker run --name mysql -v /home/erikxu/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

      

      5. 检查结果

      

      

    四、启动MongoDB

      1. 拉取官方镜像,镜像地址:https://hub.docker.com/_/mongo/

      2. 拉取镜像:docker pull mongo

      3. 准备MongoDB数据存放目录,我这里是:/home/erikxu/mongo

      4. 执行指令启动MongoDB

      docker run --name mongo -v /home/erikxu/mongo:/data/db -p 27017:27017 -d mongo:latest

      

      5. 检查结果

      

      

    五、启动Redis

      1. 拉取官方镜像,镜像地址:https://hub.docker.com/_/redis/

      2. 拉取镜像:docker pull redis

      3. 执行指令启动Redis

      docker run --name redis -d -p 6379:6379 redis

      

      4. 检查结果

      

    六、启动RabbitMQ

      1. 拉取官方镜像,镜像地址:https://hub.docker.com/_/rabbitmq/

      2. 拉取镜像:docker pull rabbitmq,如需要管理界面:docker pull rabbitmq:management

      3. 执行指令启动RabbitMQ

      无管理界面:

      docker run --hostname rabbit-host --name rabbit -d -p 5672:5672 rabbitmq

      有管理界面:

      docker run --hostname rabbit-host --name rabbit -d -p 5672:5672 -p 15672:15672 rabbitmq:management

      

      4. 检查结果

      

    七、启动Nginx

      1. 拉取官方镜像,镜像地址:https://hub.docker.com/_/nginx/

      2. 拉取镜像:docker pull nginx

      3. 准备配置文件

    worker_processes 1;
    
    events {
        worker_connections 1024;
    }
    
    http {
        server {
            listen 80;
    
            server_name 192.168.52.130;
    
            location / {
                proxy_pass http://192.168.52.130:81/;
            }
    
            location /html/ {
                proxy_pass http://192.168.52.130:81/;
            }
    
            location /dotnet/ {
                proxy_pass http://192.168.52.130:8080/;
            }
        }
    }
    

      

      4. 执行指令启动Nginx

      docker run --name nginx -p 80:80 -v /home/erikxu/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx

      

      5. 检查结果

       

      

      

    八、启动Eureka

      1. 拉取官方镜像,镜像地址:https://hub.docker.com/r/springcloud/eureka/

      2. 拉取镜像:docker pull springcloud/eureka

      3. 执行指令启动Eureka

      docker run --name eureka -d -p 8761:8761 springcloud/eureka

      

      

      4. 检查结果

      未有服务注册:

      

      下载SteelToe示例:https://github.com/SteeltoeOSS/Samples

      打开Discovery,并修改appsetting.json:

      

      

      按照README文档描述启动服务,进行服务注册:

      

    九、启动Config Server

      1. 拉取官方镜像,镜像地址:https://hub.docker.com/r/hyness/spring-cloud-config-server/

      2. 拉取镜像:docker pull hyness/spring-cloud-config-server

      3. 在GitHub上准备配置文件:https://github.com/ErikXu/.NetCore-Spring-Clould/tree/master/Configs

      4. 准备启动资源文件application.yml:

    info:
      component: config service
    
    server:
      port: 8888
    
    spring:
      application:
        name: git-config
      profiles:
        active: dev
      cloud:
        config:
          server:
            git:
              uri: https://github.com/ErikXu/.NetCore-Spring-Clould
              searchPaths: Configs
    

      

      5. 执行指令启动Config Server,注:该指令前无空格

      docker run --name configsvr -it -d -p 8888:8888
      -v /home/erikxu/config/application.yml:/config/application.yml
      hyness/spring-cloud-config-server

      

      6. 检查结果

      

    最后

      如果大家有什么问题,或者需要添加其他程序的Docker启动方式,欢迎一起沟通交流。

  • 相关阅读:
    hi.baidu.com 百度流量统计
    Autofac is designed to track and dispose of resources for you.
    IIS Manager could not load type for module provider 'SharedConfig' that is declared in administration.config
    How to create and manage configuration backups in Internet Information Services 7.0
    定制swagger的UI
    NSwag在asp.net web api中的使用,基于Global.asax
    NSwag Tutorial: Integrate the NSwag toolchain into your ASP.NET Web API project
    JS变量对象详解
    JS执行上下文(执行环境)详细图解
    JS内存空间详细图解
  • 原文地址:https://www.cnblogs.com/Erik_Xu/p/6662936.html
Copyright © 2011-2022 走看看