使用Docker分分钟启动常用应用 前言 目录 准备事项 一、启动.Net Core 二、启动静态Html 三、启动Mysql 四、启动MongoDB 五、启动Redis 六、启动RabbitMQ 七、启动Nginx 八、启动Eureka 九、启动Config Server 最后

  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加速器”里有配置加速的指令:

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  在Linux中进行配置

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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  执行道客的配置指令:

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  执行systemctl restart docker,重启Docker:

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

一、启动.Net Core

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

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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  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 .

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  7. 运行Docker容器

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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  8. 检查结果

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

二、启动静态Html

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

  2. 拉取镜像:docker pull nginx

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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

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

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

  

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

  docker build -t html:1.0 .

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

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

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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  7. 检查结果

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

三、启动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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  5. 检查结果

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

四、启动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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  5. 检查结果

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

五、启动Redis

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

  2. 拉取镜像:docker pull redis

  3. 执行指令启动Redis

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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  4. 检查结果

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

六、启动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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  4. 检查结果

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

七、启动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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  5. 检查结果

   使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

八、启动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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  

  4. 检查结果

  未有服务注册:

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

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

  打开Discovery,并修改appsetting.json:

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  

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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

九、启动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

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

  6. 检查结果

  使用Docker分分钟启动常用应用
前言
目录
准备事项
一、启动.Net Core
二、启动静态Html
三、启动Mysql
四、启动MongoDB
五、启动Redis
六、启动RabbitMQ
七、启动Nginx
八、启动Eureka
九、启动Config Server
最后

最后

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