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

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啟動方式,歡迎一起溝通交流。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM