Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml, 写好多个容器之间的调用关系 。然后,只要一个命令,就能同时启动/关闭这些

Compose允许用户通过一个单独的 docker-compose.yml模板文件 (YAML 格式)来定义 一组相关联的应用容器为一个项目(project)
  
可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题

1 安装

# 下载
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 上面github访问太慢,可以使用下面的daocloud下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose# 赋目录写的权限
chmod +x /usr/local/bin/docker-compose # 查看版本
docker-compose --version 

如果是使用curl方式安装可以用下面的方式卸载

rm /usr/local/bin/docker-compose

2 Compose 核心理念

一文件,即docker-compose.yml

两要素,服务(service)和工程 (project):

服务:一个个应用容器实例,比如各种微服务、mysql容器、nginx容器或者redis容器

工程:由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

3 Compose使用的三个步骤

1.编写Dockerfile定义各个微服务应用并构建出对应的镜像文件
2.使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务。
3.最后,执行docker-compose up命令 来启动并运行整个应用程序,完成一键部署上线

4 Compose 常用命令

# 查看帮助
docker-compose -h
# 启动所有 docker-compose服务
docker-compose up
# 启动所有 docker-compose服务 并后台运行
docker-compose up -d
# 停止并删除容器、网络、卷、镜像
docker-compose down
# 进入容器实例内部
docker-compose exec  yml里面的服务id
docker-compose exec  docker-compose.yml文件中写的服务id  /bin/bash
# 展示当前docker-compose编排过的运行的所有容器
docker-compose ps
# 展示当前docker-compose编排过的容器进程
docker-compose top
# 查看容器输出日志
docker-compose logs  yml里面的服务id
# 检查配置
docker-compose config
# 检查配置,有问题才有输出
docker-compose config -q
# 重启服务
docker-compose restart
# 启动服务
docker-compose start
# 停止服务
docker-compose stop

5 实战

本次实例是以mysql+redis+sringboot后台服务

首先将准备好的jar包上传至服务器,并编写Dockerfile

# 基础镜像使用java
FROM centosjava8:1.8
# 作者
MAINTAINER luan
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为web.jar
ADD web.jar /web.jar
# 运行jar包
RUN bash -c 'touch /web.jar'
ENTRYPOINT ["java","-Dspring.profiles.active=docker","-jar","/web.jar"]
#暴露6001端口作为微服务
EXPOSE 8830
# 使用docker build 打出web服务镜像
docker build -t web:1.8 . 

编写docker-compose.yml

version: "3"
services:# 服务名称web:# 使用的镜像image: web:1.8container_name: web1.8# 端口映射ports:- "6001:8830"volumes:- /app/microService:/datanetworks:- test_network# 依赖depends_on:- redis- mysqlredis:image: redis:6.0.8ports:- "6379:6379"volumes:- /app/redis/redis.conf:/etc/redis/redis.conf- /app/redis/data:/datanetworks:- test_networkcommand: redis-server /etc/redis/redis.confmysql:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: '123456'MYSQL_ALLOW_EMPTY_PASSWORD: 'no'MYSQL_DATABASE: 'pilms_data'MYSQL_USER: 'luan'MYSQL_PASSWORD: '123456'ports:- "3306:3306"volumes:- /app/mysql/db:/var/lib/mysql- /app/mysql/conf/my.cnf:/etc/my.cnf- /app/mysql/init:/docker-entrypoint-initdb.dnetworks:- test_networkcommand: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks:test_network:

使用docker-compose 启动

docker-compose up -d

发现web服务启动失败,原因是mysql没有设置编码格式,然后在/app/mysql/conf 下新增文件my.cnf

client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8 

重启docker-compose,发现swagger已经可以访问

Docker Compose容器编排相关推荐

  1. Docker compose 容器编排

    1. 概述 问题:如果要使用 Docker 运行 LNMP 架构,那么 Nginx.MySQL.PHP. Linux三个服务运行在一个容器里,还是运行在多个容器里呢? 答案是都可以. 你可以分别放在三 ...

  2. Docker学习(六):docker compose容器编排

    Docker-compose 实现对容器集群的快速编排 多服务部署的管理工具 定义docker-compose.yml文件,写好容器之间的调用关系,通过命令完成多个容器的同时启动关闭 解决了容器与容器 ...

  3. Docker Compose 容器编排基础使用

    Compose 是用于定义和运行多容器 Docker 应用程序的工具.通过 Compose,可以使用 YML 文件来配置应用程序需要的所有服务.然后,使用一个命令,就可以从 YML 文件配置中创建并启 ...

  4. 这就是你日日夜夜想要的docker!!!---------Docker Compose容器编排理论+实操

    文章目录 一.Compose简介 1.在Compose中有两个重要的概念 2.docker,dockerfile与docker-compose区别 二.Compose安装与卸载 1.Centos系统安 ...

  5. Docker 多容器编排Swarm(六)

    docker swarm简介 Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机 ...

  6. 浅述 Docker 的容器编排

    作者 | 天元浪子 来源 | CSDN博客 概述 作为容器引擎,Docker为容器化的应用程序提供了开放标准,使得开发者可以用管理应用程序的方式来管理基础架构,实现快速交付.测试和部署代码.随着容器的 ...

  7. docker Swarm容器编排工具

    目录 一.什么是docker swarm 二.Docker Swarm 基本结构 三.Swarm的几个关键概念 四.swarm的调度策略 五.Swarm Cluster模式特性 六.搭建docker ...

  8. dockers-系统学习-docker compose服务编排

    dockers-系统学习-docker compose服务编排 一.服务编排 1.1.概念 按照一定的业务规则批量管理容器 1.2.问题 微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会 ...

  9. 基于 Docker Compose 容器化搭建 Wordpress

    基于 Docker Compose 容器化搭建 Wordpress 最近由于业务需求帮公司搞了几个 Wordpress 作为官网,中间也是踩了不少坑,倒不是搭建 wordpress 难,主要是 wor ...

最新文章

  1. freetype 安装
  2. 关于android:id=@+id/xx的理解
  3. 对话院士成果转化基地-丰收节交易会·李喜贵:谋定精准对接
  4. 前端实习生笔试_2016春网易前端暑期实习生笔试面经(二面已挂)
  5. 做生意成败难料,你见过亏损最惨的人有多惨呢?
  6. 手动抛出异常_Java异常处理最佳实践及陷阱防范
  7. 开源框架 Apache Struts 2漏洞的 PoC 已公开
  8. 单片机之汇编语言和C语言(以PIC单片机为例)
  9. 工业机器人的构成和分类
  10. 机器人开发--AGV控制系统
  11. 无法更新计算机的启动配置 注册表,win10改win7系统卡在安装程序正在更新注册表设置怎么办...
  12. js跑马灯实现上下左右滚动 translateY translateYX
  13. 苹果企业开发者账号证书申请(保姆级)
  14. ubuntu命令安装中文语言包_Ubuntu安装中文语言包
  15. R三星463无线网卡驱动,声音驱动程序,FN快捷键驱动,Easy_Display_Manager
  16. 【嵌入式开发】Raspberry Pi 树莓派性能测试
  17. QQ浏览器怎样选择IE8兼容模式
  18. 水利水电安全员考试多选练习题库(8)
  19. 《天使与魔鬼》读后感
  20. 解决ubuntu18.04中文乱码问题

热门文章

  1. 这十一条程序员必备软技能,你一定要知道
  2. LZO--实时数据压缩库
  3. 高频电容 低频电容
  4. dockerfile构建LNRP环境练手
  5. js和jquery实现页面跳转的几种方式
  6. Elasticsearch集群“脑裂”现象
  7. java安卓怎么开发一个新闻app,一个基于Android系统的新闻客户端(一)
  8. MATLAB S-function(教程分享) 报错 flag = 3(output), at time 0.0. 输入参数的数目不足。
  9. 怎么实时查看mysql当前连接数
  10. C语言实现简单小游戏---扫雷