深入浅出之Docker Compose详解

打印 上一主题 下一主题

主题 519|帖子 519|积分 1557

目录
1.Docker Compose概述
1.1 Docker Compose 定义
1.2 Docker Compose产生背景
1.3 Docker Compose 焦点概念
1.4 Docker Compose 利用步调
1.5 Docker Compose 常用命令
 
2. Docker Compose 实战
2.1 Docker Compose下载和卸载
2.2 Docker Compose 项目概述
2.3 Docker Compose 编排字段部分详解
2.3.1 version
2.3.2 services
2.3.3 build 和 image
2.3.4 volumes 和 environment
2.3.5 ports 和 expose
2.4 Docker Compose 部署实战

 
1.Docker Compose概述

1.1 Docker Compose 定义

Docker Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器构成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器
1.2 Docker Compose产生背景

我们利用 Docker 的时候,定义 Dockerfile 文件,然后利用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包罗若干个微服务,每个微服务一般都会部署多个实例,假如每个微服务都要手动启停,那么效率之低,维护量之大可想而知。
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以利用 YML 文件来配置应用程序需要的所有服务。然后,利用一个命令,就可以从 YML 文件配置中创建并启动所有服务。.Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器,Compose文件是一个文本文件,通过指令定义集群中的每个容器怎样运行。
1.3 Docker Compose 焦点概念

Docker Compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner),如下图所示:

 
1.4 Docker Compose 利用步调

Compose 利用的三个步调:
1.编写Dockerfile定义各个微服务应用并构建出对应的镜像文件dockerfile的利用,利用dockerfile部署springboot项目。
2.利用 docker-compose.yml 定义一个完备业务单位,安排好整体应用中的各个容器服务。
3.最后,实行docker-compose up命令 来启动并运行整个应用程序,完成一键部署上线。
1.5 Docker Compose 常用命令

  1. docker --version #查看版本
  2. docker-compose -h    # 查看帮助
  3. docker-compose up    # 启动所有docker-compose服务
  4. docker-compose up -d    # 启动所有docker-compose服务并后台运行
  5. docker-compose down     # 停止并删除容器、网络、卷、镜像。
  6. docker-compose exec  yml里面的服务id   # 进入容器实例内部  docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
  7. docker-compose ps      # 展示当前docker-compose编排过的运行的所有容器
  8. docker-compose top       # 展示当前docker-compose编排过的容器进程
  9. docker-compose logs  yml里面的服务id   # 查看容器输出日志
  10. docker-compose config     # 检查配置
  11. docker-compose config -q  # 检查配置,有问题才有输出
  12. docker-compose restart   # 重启服务
  13. docker-compose start     # 启动服务
  14. docker-compose stop      # 停止服务
复制代码
 

2. Docker Compose 实战

2.1 Docker Compose下载和卸载

  1. # 下载
  2. curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  3. # 开启可执行权限
  4. chmod +x /usr/local/bin/docker-compose
  5. # 查看版本
  6. docker-compose --version
  7. #docker-compose version 1.29.2, build 5becea4c
  8. # 如果使用curl方式安装的,这样卸载即可
  9. rm /usr/local/bin/docker-compose
复制代码
2.2 Docker Compose 项目概述

这里模拟通过欣赏器访问网关,然后网关将请求转发到订单微服务,通过查询订单返回订单信息,在其中过程中订单中有用户信息,需要根据订单中的用户id调用用户微服务举行查询然后举行赋值然后返回订单信息。这里的注册中央采用nacos。其中的每个微服务暂未搭建集群,这里网关端标语为7000,订单微服务端标语为8080,用户模块微服务端标语为9201,本地运行结果如下图:

 
2.3 Docker Compose 编排字段部分详解

2.3.1 version

version 字段指定了 Docker Compose 编排文件的版本,比方:
  1. version: '3'
复制代码
2.3.2 services

services 字段指定了在 Docker Compose 编排中要运行的服务。每个服务都有一个名称,并指定要利用的镜像和容器的配置选项。比方:
  1. services:
  2.   mysql: #服务名
  3.     image: mysql:5.5 #mysql镜像
  4.   
复制代码
2.3.3 build 和 image

build 字段答应在 Docker Compose 编排中指定 Dockerfile 的位置,从而可以利用 Docker Compose 构建镜像。image 字段指定要利用的 Docker 镜像。比方:
  1. services:
  2.   mysql: #服务名
  3.     image: mysql:5.5 #mysql镜像
  4.   user: #服务名    build: ./user #这里为用户微服务文件夹,内里存放的是该服务代码jar包和Dockerfile文件
复制代码
2.3.4 volumes 和 environment

volumes 字段指定了要利用的数据卷。environment 字段指定了要设置的情况变量。比方:
  1. services:
  2.   mysql: #服务名
  3.     image: mysql:5.5 #mysql镜像
  4.     environment:      MYSQL_ROOT_PASSWORD: 000000 #设置数据库密码    volumes:    - "$PWD/mysql/data:/var/lib/mysql" #数据卷挂载
复制代码
2.3.5 ports 和 expose

ports 字段指定了要宿主机映射到容器的端口(宿主机端口:容器端口)。expose 字段是用于在 Docker 容器内部袒露端口的选项,可以让其他容器连接到这些端口,但不会将它们映射到 Docker 主机上。expose 与 ports 不同的是,expose 字段仅仅是将容器内部的端口袒露给其他容器利用,而不是直接映射到宿主机上的端口
比方:
  1. services:
  2.     gateway: #服务名
  3.        build: ./gateway #这里为网关文件夹,里面存放的是该服务代码jar包和Dockerfile文件
  4.        ports:
  5.           -"7000:7000"
  6.     nginx:
  7.         image: nginx
  8.         expose:
  9.           -"8080"
  10.    
  11.    
  12.   
复制代码
固然命令还有很多,这里举行部署实战的时候只用到上述这些编排字段,以是这里重点写了这些,别的的举行省略。
2.4 Docker Compose 部署实战

按照三步走策略第一步编写Dockerfile定义各个微服务应用并构建出对应的镜像文件dockerfile的利用,利用dockerfile部署springboot项目。
这里举行举例,把每个微服务的项目举行打包成jar文件,这里定名为a.jar。然后构建Dockerfile文件并且和每个微服务的jar包都单独放在同一个文件夹下。Dockerfile文件内容如下:
  1. From java:8-alpine
  2. COPY ./a.jar /tmp/app.jar
  3. EXPOSE 8080
  4. ENTRYPOINT java -jar /tmp/app.jar
复制代码
利用 docker-compose.yml 定义一个完备业务单位,安排好整体应用中的各个容器服务。docker-compose.yml文件内容如下:
  1. version: "3.2"
  2. services:
  3.   nacos: #服务名
  4.     image: nacos/nacos-server #nacos镜像
  5.     environment:
  6.       MODE: standalone #单机模式
  7.     ports:
  8.     - "8848:8848" #ports 字段指定了要宿主机映射到容器的端口(宿主机端口:容器端口)
  9.   mysql: #服务名
  10.     image: mysql:5.5 #mysql镜像
  11.     environment:
  12.       MYSQL_ROOT_PASSWORD: 000000 #设置数据库密码
  13.     volumes:
  14.     - "$PWD/mysql/data:/var/lib/mysql" #数据卷挂载
  15.   user: #服务名
  16.     build: ./user #这里为用户微服务文件夹,里面存放的是该服务代码jar包和Dockerfile文件
  17.   order: #服务名
  18.     build: ./order #这里为订单微服务文件夹,里面存放的是该服务代码jar包和Dockerfile文件
  19.   gateway: #服务名
  20.     build: ./gateway #这里为网关文件夹,里面存放的是该服务代码jar包和Dockerfile文件
  21.     ports:
  22.       - "7000:7000"
复制代码
实行docker-compose up命令 来启动并运行整个应用程序,完成一键部署上线,然后就可以在本身的服务器上举行远程访问了。

 
 
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表