前言

  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启动方式,欢迎一起沟通交流。

使用Docker分分钟启动常用应用的更多相关文章

  1. Docker Compose 配置文件常用指令

    Docker Compose 配置文件常用指令 YAML文件格式及编写注意事项 YAML是一种标记语言很直观的数据序列化格式,可读性高.类似于XML数据描述语言,语法比XML简单的很多. YAML数据 ...

  2. Docker 入门指南——常用命令

    前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...

  3. Docker三剑客之常用命令

    一.docker-machine 命令 说明 docker-machine create 创建一个 Docker 主机(常用-d virtualbox) docker-machine ls 查看所有的 ...

  4. Docker安装和常用命令

    Docker安装 Docker的安装可以参考 https://docs.docker.com/ 下面的 Get Docker / Docker CE / Linux, 需要关注的主要是CentOS和U ...

  5. docker 安装与常用命令与常用容器(containers)环境

    注意区别 container 与 image 的关系,container 的建立需要 image 的承载,也即 container 依赖 image,停止并删除了 container 并不会删除 im ...

  6. Docker系列之常用命令操作手册

    目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...

  7. Docker Private Registry 常用组件

    Docker Private Registry 常用组件 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Registry概述 1>.什么是registry ...

  8. Docker入门以及常用命令

    目的: Docker入门 Docker简介 Centos7安装Docker Docker HelloWorld运行原理解析 阿里云镜像仓库配置 Docker常用命令 Docker基本命令 Docker ...

  9. docker基本使用-常用命令

    一. 常用命令 #查看docker服务 docker ps #启动docker服务 systemctl start docker #查看本地镜像 docker images #删除本地镜像 docke ...

随机推荐

  1. HFun.快速开发平台(二)=》自定义列表实例(请求参数的处理)

    上编描述了自定义列表的基本实现功能,本此记录列表的请求过程. 个人比较喜欢对参数进行对象化,方便后续人维护及查看,先上代码: /************************************ ...

  2. 把时间还给洞察,且看PPT调研报告自动生成攻略

    文/JSong @2017.02.28 在数据分析里面有一句话是说,80%的时间要用于数据清洗和整理,而我觉得理想的状态应该是把更多的把时间花在数据背后的洞察当中.去年11月在简书占了个坑,说要自己写 ...

  3. RHEL 6.0 FTP服务器配置菜鸟配置过程记录

    环境: 虚拟机 RHEL6.0  为了图方便,直接就默认安装了,结果酿成大错,后表~~ 项目:搭建VSFTPD服务器 1.网络ifconfig 配置好,给个IP 2.RPM包或者YUM安装vsftpd ...

  4. Hibernate一对一外键映射

    Hibernate 一对一外键映射                    ------------------------------                            ----- ...

  5. Flume-ng源码解析之启动流程

    今天我们通过阅读Flume-NG的源码来看看Flume的整个启动流程,废话不多说,翠花,上源码!! 1 主类也是启动类 在这里我贴出Application中跟启动有关的方法,其他你们可以自己看源码,毕 ...

  6. ajax 实现三级联动

    ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里我用了数据库中的chinastates表, 数据库内容很多,三级联动里的地区名称都在里面,采用的是代号副代号的方式 比如 ...

  7. 1642: [Usaco2007 Nov]Milking Time 挤奶时间

    1642: [Usaco2007 Nov]Milking Time 挤奶时间 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 582  Solved: 33 ...

  8. java初级开发一系列的工具安装配置

    最近压力很大,刚刚帮朋友安装了一整套环境,按照印象写下此篇记录(没有图解),一是用来释放压力,二来希望可以帮到各位. 一.首先,Eclipse的安装,下载eclipse压缩包,一般为200~300M, ...

  9. Vue学习之路---No.6(分享心得,欢迎批评指正)

    我们还是先回顾一下上一次的重点: 1.事件绑定,我们可以对分别用方法和js表达式对事件进行处理 2.当方法名带括号的时候,在方法中一定要传参:而不带括号的时候,vm会自动配置默认event 3.各类事 ...

  10. Sql Server优化---统计信息维护策略

    本位出处:http://www.cnblogs.com/wy123/p/5748933.html 首先解释一个概念,统计信息是什么: 简单说就是对某些字段数据分布的一种描述,让SQL Server大概 ...