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来轻松.高效地管理容器. 一.安装 ...
随机推荐
- nginx通过参数代理到其他站点
http { include mime.types; default_type application/octet-stream; resolver 8.8.8.8; ##Nginx0.6.18以后的 ...
- nnlog 日志模块
python自带的logging模块理解起来比较费劲,直接pip install nnlog即可 1 import nnlog 2 log = nnlog.Logger(file_name='my.l ...
- CCF 201903-1 小中大
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...
- pytorch自定义RNN结构(附代码)
pytorch自定义LSTM结构(附代码) 有时我们可能会需要修改LSTM的结构,比如用分段线性函数替代非线性函数,这篇博客主要写如何用pytorch自定义一个LSTM结构,并在IMDB数据集上搭建了 ...
- Tomcat集群配置--负载均衡
Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...
- 牛客算法进阶——树形dp
1. 小G有一个大树(求树的重心) 删除该点后最大连通块的节点数最小 设f[x]表示以x为根的子树大小,那么删除x之后的各子树大小为f[to]和n-f[x] 求max(max(f[to]),n-f[x ...
- js中的base64转化
创建一个base64.js文件,将以下代码粘贴进去 var Base64= { _keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst ...
- 003 jmeter连接数据库及jmeter关联提取器
1.jmeter连接数据库 测试计划-->线程组-->在线程组上右键-添加-配置元件-JDBC Connection Configuration-->在线程组上右键-添加-取样器-J ...
- ES6-Class类上
一.基础认知 构造方法有点类似构造函数,前面学的构造函数是模拟类的,ES6用类即可 不能直接调用Person()报错,和构造函数不同,构造函数不加new调用也不报错: 一般在constructor里面 ...
- Linux&Android相关常用命令汇总记录
Linux&Android相关常用命令汇总记录 0@Linux&Android系统命令行下如何查看命令的帮助信息: command --help 1@在Linux系统中,设备分为三类, ...