使用Docker分分钟启动常用应用
前言
Docker是目前比較火的一個(gè)概念,同時(shí)也是微服務(wù)中比較關(guān)鍵的一個(gè)容器化技術(shù)。但是,單從理論上好難看出Docker的優(yōu)勢(shì),因此,我希望在這篇文章中提供一些Docker的使用示例,希望從實(shí)際應(yīng)用上幫助大家理解Docker的優(yōu)勢(shì),同時(shí)也對(duì)自己的Docker使用進(jìn)行簡(jiǎn)單的記錄。
?
目錄
準(zhǔn)備事項(xiàng)
一、啟動(dòng).Net Core
二、啟動(dòng)靜態(tài)Html
三、啟動(dòng)Mysql
四、啟動(dòng)MongoDB
五、啟動(dòng)Redis
六、啟動(dòng)RabbitMQ
七、啟動(dòng)Nginx
八、啟動(dòng)Eureka
九、啟動(dòng)Config Server
?
準(zhǔn)備事項(xiàng)
1. 安裝Docker
我使用的操作系統(tǒng)是CentOS 7/7.1,如何安裝Docker,可以參考園子里的這篇文章:《Centos安裝Docker》。
?
2. Docker加速
Docker的標(biāo)準(zhǔn)鏡像庫(kù)Docker Hub在國(guó)外,不進(jìn)行Docker加速的話拉取鏡像會(huì)比較慢,這里我使用道客(DaoCloud)來(lái)進(jìn)行Dokcer加速。在“配置Docker加速器”里有配置加速的指令:
?
在Linux中進(jìn)行配置
執(zhí)行sudo su -,獲取root權(quán)限,如果本身是root帳號(hào),可跳過(guò):
?
執(zhí)行道客的配置指令:
?
執(zhí)行systemctl restart docker,重啟Docker:
?
一、啟動(dòng).Net Core
1. 拉取dotnet標(biāo)準(zhǔn)鏡像,鏡像地址:https://hub.docker.com/r/microsoft/dotnet/
2. 拉取鏡像:docker pull microsoft/dotnet
?
3. 執(zhí)行docker images查看已下好的鏡像
?
4. 新建一個(gè).Net Core HelloWorld程序并發(fā)布
?
5. 準(zhǔn)備Dockerfile,并把Dockerfile拷貝到HelloWorld程序同級(jí)目錄。注:.Net Core運(yùn)行的默認(rèn)端口是5000,這里通過(guò)環(huán)境變量的方式把端口修改為8080
| FROM microsoft/dotnet:latestCOPY .?/appWORKDIR?/appEXPOSE 8080/tcpENV ASPNETCORE_URLS http://*:8080ENTRYPOINT ["dotnet",?"HelloWorld.dll"] |
6. 定位到程序目錄,執(zhí)行指令把HelloWorld程序打包成Docker鏡像
docker build -t hello-world:1.0 .
?
?
7. 運(yùn)行Docker容器
docker run --name hello-world -p 8080:8080 -d hello-world:1.0
?
8. 檢查結(jié)果
?
二、啟動(dòng)靜態(tài)Html
1. 拉取Nginx官方鏡像,鏡像地址:https://hub.docker.com/_/nginx/
2. 拉取鏡像:docker pull nginx
3. 準(zhǔn)備html程序,可以使用我之前的一個(gè)Durandal的示例:https://github.com/ErikXu/DurandalDemo
4.?準(zhǔn)備Dockerfile,并把Dockerfile拷貝到Html程序同級(jí)目錄。注:程序中需要有一個(gè)入口頁(yè)面,如index.html
| 12 | FROM nginx:latestCOPY .?/usr/share/nginx/html |
5.?定位到程序目錄,執(zhí)行指令把Html程序打包成Docker鏡像
docker build -t html:1.0 .
?
6.?運(yùn)行Docker容器,注:這里把容器中的80端口映射到虛擬機(jī)的81端口
docker run --name html -p 81:80 -d html:1.0
?
7.?檢查結(jié)果
?
三、啟動(dòng)Mysql
1. 拉取官方鏡像,鏡像地址:https://hub.docker.com/_/mysql/
2. 拉取鏡像:docker pull mysql
3. 準(zhǔn)備Mysql數(shù)據(jù)存放目錄,我這里是:/home/erikxu/mysql
4. 執(zhí)行指令啟動(dòng)Mysql
docker run --name mysql -v?/home/erikxu/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
?
5. 檢查結(jié)果
?
四、啟動(dòng)MongoDB
1. 拉取官方鏡像,鏡像地址:https://hub.docker.com/_/mongo/
2. 拉取鏡像:docker pull mongo
3. 準(zhǔn)備MongoDB數(shù)據(jù)存放目錄,我這里是:/home/erikxu/mongo
4. 執(zhí)行指令啟動(dòng)MongoDB
docker run --name mongo -v /home/erikxu/mongo:/data/db -p 27017:27017 -d mongo:latest
?
5. 檢查結(jié)果
?
?
五、啟動(dòng)Redis
1. 拉取官方鏡像,鏡像地址:https://hub.docker.com/_/redis/
2.?拉取鏡像:docker pull redis
3. 執(zhí)行指令啟動(dòng)Redis
docker run --name redis -d -p 6379:6379 redis
?
4. 檢查結(jié)果
?
六、啟動(dòng)RabbitMQ
1. 拉取官方鏡像,鏡像地址:https://hub.docker.com/_/rabbitmq/
2.?拉取鏡像:docker pull rabbitmq,如需要管理界面:docker pull rabbitmq:management
3. 執(zhí)行指令啟動(dòng)RabbitMQ
無(wú)管理界面:
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. 檢查結(jié)果
?
七、啟動(dòng)Nginx
1. 拉取官方鏡像,鏡像地址:https://hub.docker.com/_/nginx/
2.?拉取鏡像:docker pull nginx
3. 準(zhǔn)備配置文件
| 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. 執(zhí)行指令啟動(dòng)Nginx
docker run --name nginx -p 80:80 -v /home/erikxu/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx
?
5. 檢查結(jié)果
?
?
?
?
八、啟動(dòng)Eureka
1. 拉取官方鏡像,鏡像地址:https://hub.docker.com/r/springcloud/eureka/
2.?拉取鏡像:docker pull springcloud/eureka
3. 執(zhí)行指令啟動(dòng)Eureka
docker run --name eureka -d -p 8761:8761 springcloud/eureka
4.?檢查結(jié)果
未有服務(wù)注冊(cè):
?
下載SteelToe示例:https://github.com/SteeltoeOSS/Samples
打開(kāi)Discovery,并修改appsetting.json:
按照README文檔描述啟動(dòng)服務(wù),進(jìn)行服務(wù)注冊(cè):
?
九、啟動(dòng)Config Server
1. 拉取官方鏡像,鏡像地址:https://hub.docker.com/r/hyness/spring-cloud-config-server/
2.?拉取鏡像:docker pull hyness/spring-cloud-config-server
3. 在GitHub上準(zhǔn)備配置文件:https://github.com/ErikXu/.NetCore-Spring-Clould/tree/master/Configs
4. 準(zhǔn)備啟動(dòng)資源文件application.yml:
| info:??component: config serviceserver:??port: 8888spring:??application:????name: git-config??profiles:????active: dev??cloud:????config:??????server:????????git:??????????uri: https://github.com/ErikXu/.NetCore-Spring-Clould??????????searchPaths: Configs |
5. 執(zhí)行指令啟動(dòng)Config Server,注:該指令前無(wú)空格
docker run --name configsvr -it -d -p 8888:8888 \
-v /home/erikxu/config/application.yml:/config/application.yml \
hyness/spring-cloud-config-server
?
6.?檢查結(jié)果
?
最后
如果大家有什么問(wèn)題,或者需要添加其他程序的Docker啟動(dòng)方式,歡迎一起溝通交流。
原文地址:http://www.cnblogs.com/Erik_Xu/p/6662936.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的使用Docker分分钟启动常用应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用Mono将C#编译运行至WebAss
- 下一篇: TypeScript 2.7 版本发布