一、docker-compose介绍

    使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,Docker Compose。

  Dockerfile可以让用户管理一个单独的应用容器,而compose则允许用户在一个模板(yaml格式)中定义一组相关联的应用容器(被称为一个project,即项目) 

 1、docker-compose基础概念

    docker-compose项目是docker官方的开源项目, 负责实现对docker容器集群的快速编排。

    docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner)

    docker-compose运行目录下的所有文件(docker-compose.yml文件、extends文件或环境变量等)组成一个工程,如无特殊指定,工程名即为当前目录名。

  •  一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。
  •  一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。因此需要借助其他工具实现服务发现及负载均衡,比如consul。
  •  docker-compose的工程配置文件默认为docker-compose.yml。可以通过环境变量COMPOSE_FILE -f 参数自定义配置文件,其自定义多个有依赖关系的服务及每个人服务运行的容器。

二、YAML文件格式及编写

  示例yaml文件

 1 version: "3"  # 版本号,目前使用3
2 services: # 定义服务
3 rms-rcs: # 服务名称,目前是后端服务
4 image: rms-rcs:v1.0.0 # 镜像名称及tag
5 container_name: rms-rcs # 定义容器名称
6 networks: # 选择网络,为了容器之间通讯
7 - "tester"
8 irsp_client:
9 image: irsp_client:v1.0.0
10 container_name: irsp_client
11 networks:
12 - "tester"
13 irweb:
14 image: irweb:v1.0.0
15 container_name: irweb
16 ports:
17 - "80:80"
18 networks:
19 - "tester"
20 networks: # docker创建网络
21 tester: # 新建网络名称
22 driver: bridge # 网络类型,例如:桥接

三、Docker Compose 配置常用字段

字段  描述
build  指定Dockerfile文件名(要指定的Dockerfile文件需要在build标签的子级标签中用dockefile标签指定)
dockerfile 构建镜像上下文路径
context 可以是dockerfile路径,或者时执行git仓库的url地址
images 指定镜像(已存在)
command  执行命令,会覆盖容器启动后默认执行的命令(会覆盖dockefile中的CMD指令)
container_name  指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量。
deploy  指定部署和运行服务相关配置,只能在swarm模式使用
environment  添加环境变量
networks  加入网络,引用顶级networks下条目
network-mode  设置容器的网络模式
ports  暴露容器端口,与-p相同,但是端口不能低于60
volumes  挂载一个宿主机目录或命令卷到容器,命令卷要在顶级volumes定义卷名称
volumes_from  从另一个服务或容器挂载卷,可选参数:ro和rw(仅版本‘2’支持)
hostname 在容器内设置内核参数
links  连接诶到另一个容器,- 服务名称[ : ]
privileged  用来给容器root权限,注意是不安全的,true

  2、Docker-compose常用命令

    运行这些命令需要结合docker-compose一起使用。

    且必须要在含有docker-compose.yml文件的目录中才可以使用,不然报错。如果文件名称不是默认名称,可以使用-f参数。

命令 描述
build 重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定一个服务容器启动数量
top 显示正在运行的容器进程
logs 查看服务容器的输出
down 删除容器、网络、数据卷和镜像
stop/start/restart 停止/启动/重启服务

四、docker-compose安装

  docker-compose是docker的独立产品,因此需要安装docker之后再单独安装docker compose。

  github访问太慢,没有工具(那种工具)

    sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

  使用国内的即可

  然后找到下载位置给添加可执行权限:

    cd /user/local/bin

    chmod 777 docker-compose # 777给最大权限,如果是生产环境,那就酌情给权限4 2 1,自己算着给

下一节,关于docker network实现容器内部通讯。

最新文章

  1. Independent Components Analysis:独立成分分析
  2. Linux上服务的启动,停止和重启
  3. RTL8710 ROM 符号表 函数,常量,变量
  4. Android如何让真机显示debug log的调试信息
  5. (easy)LeetCode 226.Invert Binary Tree
  6. hdu 1195 广度搜索
  7. 【HDOJ】2851 Lode Runner
  8. Annotation(三)——Spring注解开发
  9. Oracle11g R2学习系列 之一安装篇
  10. ckplayer 项目实战
  11. svn + jenkins + maven 实现java环境的自动化构建和部署
  12. 【iOS】7.4 定位服务->3.1 地图框架MapKit 功能1:地图展示
  13. MYSQL数据库引擎区别详解
  14. cell的复用机制
  15. springMvc学习笔记一
  16. 论文学习-深度学习目标检测2014至201901综述-Deep Learning for Generic Object Detection A Survey
  17. 12. Integer to Roman (JAVA)
  18. 一个nginx 回源限速的bug处理过程记录
  19. 进程池的同步方法 pool.apply
  20. 小程序之image图片实现宽度100%,高度自适应

热门文章

  1. 我这.NET菜鸟,用它开发RabbitMQ消息队列后,竟被老板一夜提拔为架构师
  2. Vue33 使用nvm管理nodejs
  3. layui富文本的使用注意事项以及拓展
  4. 工控领域上云实践-Zstack和软赢
  5. jupyter环境搭建
  6. JZOJ 100149. 一道联赛A题
  7. CCRD_TOC_2008年第11期
  8. git拉取新分支、删除分支、修改远程分支
  9. mysql的双1设置是什么?
  10. ASP动态网页(网站)设计教程