前言

  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. [编织消息框架][rpc]使用篇

    rpc 分两部份,一个是调用者,另一方是服务提供者 调用者只关心那个服务,传相应参数,返回内容就可以 而提供者根据调用相应服务同参数,工作处理后响应内容即可 根据他们的关系可以用JAVA 接口同实现类 ...

  2. 字符串查找算法总结(暴力匹配、KMP 算法、Boyer-Moore 算法和 Sunday 算法)

    字符串匹配是字符串的一种基本操作:给定一个长度为 M 的文本和一个长度为 N 的模式串,在文本中找到一个和该模式相符的子字符串,并返回该字字符串在文本中的位置. KMP 算法,全称是 Knuth-Mo ...

  3. php 手动搭建环境

    php手动搭建环境有好多种组合,版本号不一致,会导致搭建失败. 我搭建的组合是: php5.6+MySQL5.6+Apache2.4的组合. 一.PHP语言包下载 首先从官网上下载php5.6 htt ...

  4. Java面试10|数据库相关

    1.ID分配单点问题 系统使用一张表的自增来得到订单号,所有的订单生成必须先在这里insert一条数据,得到订单号.分库后,库的数量变多,相应的故障次数变多,但由于单点的存在,故障影响范围并未相应的减 ...

  5. Visual Studio 2017 ASP.NET Core开发

    Visual Studio 2017 ASP.NET Core开发,Visual Studio 2017 已经内置ASP.NET Core 开发工具. 在选择.NET Core 功能安装以后就可以进行 ...

  6. iOS项目之同时点击多个按钮解决方案

    自己的项目完成后,在测试中出现了一个情况,同时点击界面中的多个按钮,会跳转多个界面.然后又看了看别的app,发现也有这样的情况, 如图 上面是我手机上美团app的截图,上面的分类同时选择多个时,只能跳 ...

  7. PHP数据访问修改和多条件查询(20161030)

    查询分为关键字查询和准确查询 1.没有提交的时候--查所有 2.两个输入都为空--查所有3.第一个条件有,第二个为空--根据第一个条件查4.第一个没有,第二个有--根据第二个条件查5.两个都有--根据 ...

  8. App对接支付宝移动支付功能

    前段时间看了下app对接支付宝移动支付的功能,并自己总结了下支付宝移动支付的实现流程 一.申请流程          前提是已有现成的应用. 1.  申请地址            https://b ...

  9. iOS网络编程笔记——GCDAsyncSocket使用

    CocoaAsyncSocket为Mac和iOS提供了易于使用且强大的异步通信库. 简单的Socket通信包括了建连.断开连接.发送socket业务请求.重连这四个基本功能. 1.建立连接:GCDAs ...

  10. 【记录】iOS10 点击推送栏的问题

    之前做的一个用户点击 推送栏然后处理相应事件是在这里面处理的 - (void)application:(UIApplication *)application didReceiveRemoteNoti ...