使用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
| 1 2 3 4 5 6 7 8 | FROM microsoft/dotnet:latestCOPY . /appWORKDIR /appEXPOSE 8080/tcpENV ASPNETCORE_URLS http://*:8080ENTRYPOINT ["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
| 1 2 | FROM nginx:latestCOPY . /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. 准备配置文件
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | info:  component: config serviceserver:  port: 8888spring:  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启动方式,欢迎一起沟通交流。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号