使用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

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

原文地址:http://www.cnblogs.com/Erik_Xu/p/6662936.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dubbo(七)之自动加载环境变量

转载自 自动加载环境变量 在 Dubbo 中自动加载环境变量 从 2.7.3 版本开始,Dubbo 会自动从约定 key 中读取配置,并将配置以 Key-Value 的形式写入到URL中。 支持的 key 有以下两个: dubbo.labels,指定一些列配置到 URL 中的键…

nssl1337-矩形统计【单调栈】

正题 题目大意 一个n∗nn*nn∗n的矩阵,然后有些位置破损。求可以剪出多少个不破损的矩形。 解题思路 预处理upi,jup_{i,j}upi,j​表示从(i,j)(i,j)(i,j)向上多少格子都是非破损格子。 然后我们枚举下界LowLowLow,将图像变成一个下部平整的条形图&…

TypeScript 2.7 版本发布

TypeScript 2.7版本已经发布了,新增了几个主要功能特性并进行了一些bug的修正。其中一些亮点包括对类属性的赋值检查、固定长度的元组和改进对象文字的类型推断。总的来说,这个版本对类型系统、ES2015特性和总体的TypeScript开发者体验都进行了改进优化。…

Dubbo(八)之API 配置

转载自 DubboAPI 配置 以API 配置的方式来配置你的 Dubbo 应用 API 属性与配置项一对一&#xff0c;各属性含义&#xff0c;请参见&#xff1a;配置参考手册&#xff0c;比如&#xff1a;ApplicationConfig.setName("xxx") 对应 <dubbo:application name"…

nssl1338-逃亡路径【最短路计数,bfs】

正题 题目大意 n∗mn*mn∗m的格子&#xff0c;一个走"日"字形的马&#xff0c;从(1,1)(1,1)(1,1)走到(n,m)(n,m)(n,m)的最短路条数。 解题思路 模板最短路计数改一下即可 当然因为边权都为1所以这里改成了bfsbfsbfs codecodecode #include<cstdio> #include&…

Azure Functions + Azure Batch实现MP3音频转码方案

客户需求客户的环境是一个网络音乐播放系统&#xff0c;根据网络情况提供给手机用户收听各种码率的MP3歌曲&#xff0c;在客户没购买歌曲的情况下提供一个三十秒内的试听版本。这样一个系统非常明确地一个需求就是会定期需要将一批从音乐版商手中获取到的高比特率音乐文件转换成…

Springboot Mybatis多数据源配置MybatisProperties坑

一、场景复现 配置了两个数据源&#xff0c;查询Dao却报错表不存在。 &#xff08;1&#xff09;maven <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId> </dependency> …

nssl1351-矩形反色【离散,差分】

正题 题目大意 对一个全白矩阵每次选择一个矩阵颜色取反。 然后求最后所有黑色联通块的周长之和。 解题思路 因为是算周长&#xff0c;所以我们将一个矩阵拆分成4条边&#xff0c;然后将横竖分开处理。 若处理横的边&#xff0c;我们按照xxx为关键字排序。 然后对于xxx不同…

dotnet core webapi +vue 搭建前后端完全分离web架构(一)

架构服务端采用 dotnet core webapi前端采用: Vue router elementUIaxios问题使用前后端完全分离的架构&#xff0c;首先遇到的问题肯定是跨域访问。前后端可能不在同个server上&#xff0c;即使前后端处在同个server上&#xff0c;由于前后端完全分离&#xff0c;前后端使用…

SpringBoot使用日志

转载自 SpringBoot使用日志 1、选什么日志框架 首先列举一下日志门面和实现SpringBoot默认选用SLF4J和Logback日志级别&#xff1a;springboot默认已经帮我们配置好了日志&#xff0c;日志级别为trace<debug<info<warn<error默认的日志级别为inifo&#xff0c;日…

Dotnet Core Windows Service

在dotnet 中有topshelf 可以很方便的写windows 服务并且安装也是很方便的&#xff0c;命令行 运行.exe install 就直接把exe 程序安装成windows 服务。当然代码也要做相应的修改&#xff0c;具体的可以参照例子。在dotnet core 2.0 中 我们也有一个很方便的dll 来使用 https://…

P4549-[模板]裴蜀定理

正题 题目链接:https://www.luogu.org/problem/P4549 题目大意 一个整数序列AAA&#xff0c;一个整数序列XXX使得 ∑i1nAiXiS\sum_{i1}^n A_iX_iSi1∑n​Ai​Xi​S 求SSS可能的最小正整数值。 裴蜀定理 对于方程axbyS(x,y∈N)axbyS(x,y\in \mathbb{N}^)axbyS(x,y∈N) 的充要…

Dubbo(十)之配置加载流程

转载自 Dubbo配置加载流程 Dubbo 中的配置加载流程介绍 此篇文档主要讲在应用启动阶段&#xff0c;Dubbo框架如何将所需要的配置采集起来&#xff08;包括应用配置、注册中心配置、服务配置等&#xff09;&#xff0c;以完成服务的暴露和引用流程。 根据驱动方式的不同&…

.NET 文档数据库 RavenDB 4.0 发布

RavenDB 还有一个新的版本&#xff0c;RavenDB 4.0.0&#xff0c;一个ACID文档数据库&#xff0c;为数据操作中的高性能业务提供完全事务性的开源NoSQL解决方案。新版本更新了许多关键功能。平台Windows x64Windows x86Ubuntu 16.04 x64树莓派Docker&#xff08;Ubuntu 16.04和…

P5091-[模板]欧拉定理

正题 题目链接:https://www.luogu.org/problem/P5091 题目大意 求abmod&ThinSpace;&ThinSpace;ma^b\mod mabmodm 欧拉定理及扩展 欧拉定理: 对于(a,m)1(a,m)1(a,m)1那么有aφ(m)≡1(modm)a^{\varphi(m)}\equiv 1(mod\ m)aφ(m)≡1(mod m) 扩展欧拉定理 ab≡{ab%φ…

Dubbo(九)之注解配置

转载自 Dubbo注解配置 以注解配置的方式来配置你的 Dubbo 应用 提示 需要 2.6.3 及以上版本支持。 点此查看 完整示例 服务提供方 Service注解暴露服务 Service public class AnnotationServiceImpl implements AnnotationService {Overridepublic String sayHello(Stri…

P5431-[模板]乘法逆元2【递推】

正题 题目链接:https://www.luogu.org/problem/P5431 题目大意 一个长度为nnn的序列aaa。 求(∑i1nkiai)%p(\sum_{i1}^n \frac{k^i}{a_i})\% p(i1∑n​ai​ki​)%p 解题思路 定义si∏i1iais_i\prod_{i1}^ia_isi​i1∏i​ai​ 1si−11si∗ai\frac{1}{s_{i-1}}\frac{1}{s_{i}…

dotnetcore+vue+elementUI 前后端分离架 二(后端篇)

前言最近几年前后端分离架构大行其道&#xff0c;而且各种框架也是层出不穷。本文通过dotnetcore vue 来介绍 前后端分离架构实战。涉及的技术栈服务端技术mysql本项目使用mysql 作为持久化层本项目采用了 mysql 的示例 employees 数据库, 需要的朋友可以自行下载 。http://www…

SpringCloud Gateway配置自定义路由404坑

一、场景复现 微服务自定义路由&#xff0c;返回404页面。 ①如图&#xff1a; &#xff08;1&#xff09;springcloud-gateway的路由设置 Configuration public class RouteConfig {Beanpublic RouteLocator customRouteLocator(RouteLocatorBuilder builder) {return buil…

Actor-ES框架:Ray-Handler之ToReadHandler编写

如图右上角所示&#xff0c;Ray中有两类Handler&#xff08;SubHandler和PartSubHandler&#xff09;,在使用中&#xff0c;SubHandler派生Actor的CoreHandler&#xff0c;PartSubHandler派生SQLToReadHandler&#xff0c;SQLToReadHandler派生Actor的ToReadHandler&#xff0c…