Docker-Compose编排与部署
Docker Compose (多个容器编排)
是一个定义及运行多个docker容器的工具,可以使用YAML文件来配置应用,使用命令,可以创建并启动配置中的所有服务。docker compose会通过解析容器之间的依赖关系,按先后顺序启动容器。
适应所有环境过程
- 使用Dockerfile定义应用程序的环境,可以在任何地方复制
- docker-compose.yml中定义组成应用程序服务,可以在任何环境中运行
- 运行docker-compose开始运行应用程序
官方文档:https://docs.docker.com/compose/overview
Docker compose优点
能将多个繁琐的docker命令步奏,简化成一个命令
compose原理

首先docker-compose up -d指令启动,一个docker-compose.yml定义了一个docker -compose的project(一个项目),compose会传到project参数由project模块处理
其次若果宿主机有与应用对应的容器,docker-compose将进行逻辑判断,可以指定直接启动已有容器,docker-compose会执行server模块的容器重启,否则直接启动已有容器。
最后就是在container模块执行启动时,模块会调用docker-py客户端执行post请求
compose案例
#首先安装docker-compose
/usr/bin/docker-compose #一般默认在这里面
#如果没有下载到这里面
[root@localhost ~]# chmod +x /usr/bin/docker-compose #给他可执行权限
[root@localhost ~]# docker-compose version #查看版本号就可以使用了
docker-compose version 1.21.1, build 5a3f1a3
docker-py version: 3.3.0
CPython version: 3.6.5
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
docker-compose用法
格式:docker-compose [-f...] [options] [COMMAND(命令)] [ARGS(命令参数)...]
docker-compose常用选项-f
- --verbose:输出更多调试信息
- --version:打印版本信息
- -f,--file FILE 使用特定的compose模板文件,默认为docker-compose.yml
- -p,--project-name NAME 指定项目名称,默认使用目录名称
docker-compose常用命令:
- –build 在启动容器前构建服务镜像
- kill 杀掉容器
- logs 显示容器输出内容
- port 打印绑定的开放端口
- ps 显示容器
- pull 拉去服务镜像
- restart 重启服务
- rm 删除停止的容器
- run 运行一个一次性命令
- scale 设置服务的容器数目
- exec 切换到容器内
- start 开启服务
- stop 停止服务
- up 创建并启动服务
docker-compose中的yml文件
YAML全称YAML Ain't Markup Language表示“YAML不是一种标记语言”的缩写,为了强调YAML语言以数据作为中心,不是以标记语言为重点,使用返璞词重新命名。
YAML是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。
YAML文件注意事项
- 通常开头缩进两个空格(不能使用tab键)
- 字符的后面缩进一个空格,冒号,逗号,横杆等。
- 支持#注释
- 允许加入空格
docker-comopse.yml文件lnmp
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 80:80
networks:
- lnmp
volumes:
- ./wwwroot:/usr/local/nginx/html
php:
hostname: php
build:
context: ./php
dockerfile: Dockerfile
ports:
- 9000:9000
networks:
- lnmp
volumes:
- ./wwwroot:/usr/local/nginx/html
mysql:
hostname: mysql
image: mysql:5.6
ports:
- 3306:3306
networks:
- lnmp
volumes:
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/data:/var/lib/mysql
command: --character-set-server=utf8
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: user123
networks:
lnmp:
docker-compose中YAML常用字段
- images用来指定服务的镜像名称或镜像ID,如果镜像在本地不存在,compose将会尝试去拉取这个镜像。
- volumes指令用于设置数据卷挂载路径,数据卷挂载路径可以是一个目录或一个已经存在的数据卷容器,可以设置宿主机路径HOST:CONTAINER或加上访问模式HOST:CONTAINER:ro。使用ro表示对于容器来说数据卷是只读的,这样可以有效地保护宿主机的文件系统。
- networks指令用于设置指定网络
- command覆盖容器启动后默认执行的命令
- ports暴露端口,与-p相同,但端口不能低于60
#使用docker编译lnmp
上传或者编译lnmp目录包,里面有各种配置,以及最主要的compose.yml,宿主机
[root@localhost ~]# cd compose_lnmp/
[root@localhost compose_lnmp]# ls
docker-compose.yml mysql nginx php wwwroot
[root@localhost compose_lnmp]# ls mysql/
conf data
[root@localhost compose_lnmp]# ls nginx/
Dockerfile nginx-1.12.1.tar.gz nginx.conf run.sh
[root@localhost compose_lnmp]# ls php/
Dockerfile php-5.6.39.tar.gz php.ini
[root@localhost compose_lnmp]# ls wwwroot/
index.html index.php
#所有准备好后
docker-compose up -d #在目录里,要识别到.yml文件
构建完成后
docker-compose ps #查看状态
docker-compose restart #三个容器重启(也就是说一下管理三个容器)
此时就可以查看端口,访问页面了
Docker-Compose编排与部署的更多相关文章
- Docker Compose编排工具部署lnmp实践及理论(详细)
目录 一.理论概述 编排 部署 Compose原理 二.使用docker compose 部署lnmp 三.测试 四.总结 一.理论概述 Docker Compose是一个定义及运行多个Docker容 ...
- 使用Docker compose编排Laravel应用
前言 Laravel官方开发环境推荐的是Homestead(其实就是一个封装好的Vagrant box),我感觉这个比较重,于是自己用Docker compose编排了一套开发环境,在这里分享下. 环 ...
- Docker 镜像编排并部署SpringBoot应用
Docker-compose是一个基于Docker的编排工具,所谓编排个人理解就是将不同的镜像通过配置,组成一个新的运行环境,官方定义是:Compose is a tool for defining ...
- Docker(二十六)-Docker Compose编排容器
1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...
- Docker系列之(五):使用Docker Compose编排容器
1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...
- docker compose 编排
Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Comp ...
- Docker Compose 项目打包部署
Docker Compose 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架构的应用系统一 ...
- 使用Docker Compose编排Spring Cloud微服务
文章目录 微服务构建实例 简化Compose的编写 编排高可用的Eureka Server 编排高可用Spring Cloud微服务集群及动态伸缩 微服务项目名称 项目微服务中的角色 microser ...
- 使用docker compose编排容器
一.安装docker compose 二进制包安装 1.安装 Docker Compose 从 官方 GitHub Release 处直接下载编译好的二进制文件即可 # curl -L https:/ ...
- 使用Docker Compose编排微服务
一般微服务架构会包含若干个微服务,而每个微服务可以有多个实例,如果每个微服务都有手动启停,那么效率就很低.维护量比较大. 所以我们可以使用Docker Compose来轻松.高效地管理容器. 一.安装 ...
随机推荐
- Tooltip 文字提示,居中显示
Tooltip 文字提示有时候在table中无法居中显示,这个可以设置一下 <a-tooltip placement="top" overlayClassName=" ...
- JavaScript基础知识整理(ES5创建对象)
创建对象 我们开始可以用Object构造函数或者对象字面量来快速创建对象,但使用这种方式创建多个对象时会产生大量重复代码,所以我们有了以下几种创建对象的方式. (1)工厂模式 function cre ...
- Java多线程编程技术方案原理
一 ,多线程相关的一些概念 1,线程和进程: 线程指的是进程中一个单一顺序的控制流, 进程中可以并发多个线程,每条线程并行执行不同的任务,被认为是一个计算资源的集合.进程不能被任务是一个应用,因为有些 ...
- css 实现 加载中动画效果
上代码: <style> .pswp__preloader__icn { opacity:0.75; width: 24px; height: 24px; -webkit-animatio ...
- OpenJ_Bailian - 1088
OpenJ_Bailian - 1088 题解:DFS记忆化搜索 记忆化搜索也可以说是动态规划,最后的答案也是从一个个子问题推导而来 #include <bits/stdc++.h> #d ...
- CAD梦想画图中的“绘图工具——多线段”
CAD软件多线段命令是作为单个平面对象创建的相互连接的线段序列.可以创建直线段.圆弧段或两者的组合线段. 执行方式: (1)单击菜单栏"绘图→多线段".如图: (2)单击绘图工具栏 ...
- 微信小程序-自定义tabbar配置及注意事项
1.选中要创建tabbar组件的目录,右键选定新建Componen 2.然后编写wxml代码和wxss样式 <cover-view class="tab-bar"> & ...
- python的GIL全局解释器锁
global interpreter lock -- 全局解释器锁 CPython 解释器所采用的一种机制,它确保同一时刻只有一个线程在执行 Python bytecode.此机制通过设置对象模型(包 ...
- Rinetd linxu TCP 端口转发
Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具,实现端口映射/转发/重定向.Rinetd是单一过程的服务器,它处理任何数量的连接到在配置文件etc/r ...
- ICPC2020 World Final
ICPC2020 WF C 洛谷 题意:给定矩形区域左下角\((0,0)\),右上角\((dx,dy)\),其中\(2<=dx,dy<=10^5\),在矩形区域有\(n(n<=100 ...