共计 4259 个字符,预计需要花费 11 分钟才能阅读完成。
前言
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
1 2 3 4 5 6 7 8 | 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. 准备配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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.linuxidc.com/Linux/2017-04/142649.htm