Py学习  »  docker

使用Docker分分钟启动常用应用

运维 • 6 年前 • 759 次点击  

来自:编程玩家 - 博客园

链接:www.cnblogs.com/Erik_Xu/p/6662936.html(点击尾部阅读原文前往)

程序猿自媒体已获转载授权


前言


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》。http://www.cnblogs.com/coolworld/p/5486640.html

 

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” 获取更多相关文章。



本文编号92,以后想阅读这篇文章直接输入92即可。

●输入m获取文章目录

推荐↓↓↓
 

Linux学习

推荐:《15个技术类公众微信

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/weixin/rmQL9CiSBX
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/2075
 
759 次点击