Docker compose单机编排工具
Docker compose单机编排工具
docker-compose介绍
Compose是用于定义和运行多容器 Docker应用工具
通过Compose 可以使用YML文件来配置应用程序所需要的所有服务
Docker Compose使用的三步:
- 1.使用docker file 定义应用程序的环境
- 2.docker-compose定义构成应用程序的服务
- 3.启动Compose,就相当于启动应用
Docker Compose官方版本说明:
docker-compose安装部署
## yum安装docker Compose
yum install -y docker-compose(需要epel源)
## 官方下载方式
[root@db02 ~]$ cd /usr/local/bin/
[root@db02 /usr/local/bin]$ curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
## 加执行权限
[root@db02 /usr/local/bin]$ chmod +x /usr/local/bin/docker-compose
## 查看版本
[root@db02 /usr/local/bin]$ docker-compose version
Docker-compose语法
YAML语法
version: '版本号'
services:
服务名称1:
image: 容器镜像
container_name: 容器名称
environment:
- 环境变量1=值1
- 环境变量2=值2
volumes:
- 宿主机数据目录:容器内数据目录
- 宿主机目录路径:容器目录路径
- 驱动:容器目录路径
ports:
- 宿主机端口:容器内映射端口
networks:
- 自定义网络名称
links:
- namenode
depends_on:
- 依赖服务
command:
- 数据库使用字符集变量时可以用
restart: always
服务名称2:
image: 容器镜像
container_name: 容器名称
environment:
- 环境变量1=值1
- 环境变量2=值2
user: 宿主机用户:容器用户
volumes:
- 宿主机数据目录:容器内数据目录
- 宿主机目录路径:容器目录路径
- 驱动:容器目录路径
ports:
- 宿主机端口:容器内映射端口
networks:
- 自定义网络名称
links:
- namenode
depends_on:
- 依赖服务
restart: always
networks:
default:
externnal: true
name: 自定义网络名称
自动编排zabbix
前面使用了手动部署启动abbix
手动启动zabbix
## 手动启动zabbix
# 开启mysql容器,用于zabbix连接使用
docker run \
--name mysql56 \
-p 3306:3306 \
-e MYSQL_DATABASE=zabbix \ # 创建zabbix库
-e MYSQL_USER=zabbix \ # 创建zabbix用户
-e MYSQL_PASSWORD=zabbix \ # 给用户密码
-e MYSQL_ROOT_PASSWORD=123 \ # 给root用户密码
-d mysql:5.6 \
--character-set-server=utf8 \ # 指定字符集及校验规则
--collation-server=utf8_bin
# 开启zabbix-server容器
docker run \
--name zabbix-server-mysql \ # 定义容器名称
--link mysql56 \ # 与MySQL容器建立单向容器互通
-p 10051:10051 \ # 端口转发,服务端
-e DB_SERVER_HOST="mysql56" \ # 需要连接到的后端数据库容器名
-e MYSQL_USER="zabbix" \ # 连接后端数据库的用户
-e MYSQL_PASSWORD="zabbix" \ # 用户密码
-d zabbix/zabbix-server-mysql
# 开启zabbix前端容器
docker run \
--name zabbix-web-nginx-mysql \ # 定义容器名称
--link mysql56 \ # 与MySQL容器建立单向容器互通
--link zabbix-server-mysql \ # 与zabbix-server容器建立单向容器互通
-p 80:8080 \ # 用宿主机80代理zabbix前端8080端口
-e DB_SERVER_HOST="mysql56" \ # 需要连接到的后端数据库容器名
-e MYSQL_USER="zabbix" \ # 连接后端数据库的用户
-e MYSQL_PASSWORD="zabbix" \ # 用户密码
-e ZBX_SERVER_HOST="zabbix-server-mysql" \ # 指定zabbix服务端容器名称
-e PHP_TZ="Asia/Shanghai" \ # 指定时区
-d zabbix/zabbix-web-nginx-mysql
使用docker compose编排zabbix
[root@db02 /app/zabbix]$ vim docker-compose.yml
version: '3'
services:
mysql5.7: # 服务名称 自定义
image: mysql:5.7 # 使用的镜像
container_name: mysql5.7 # 容器名称
environment: # 变量定义
- MYSQL_ROOT_PASSWORD=123
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
volumes: # 文件映射
- /data/mysql/data:/var/lib/mysql
user: 1000:999 # 用户映射,本机的id为1000用户是mysql,容器的mysql用户id为999
ports: # 端口映射
- 3306:3306
command: # 字符集及校验规则
--character-set-server=utf8
--collation-server=utf8_bin
restart: always # 开启开机自启
zabbix-server:
image: zabbix/zabbix-server-mysql
container_name: zabbix-server
environment:
- DB_SERVER_HOST=mysql5.7
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
ports:
- 10051:10051
links: # 建立连接的容器名称
- mysql5.7
depends_on: # 依赖的服务名称,必须等被依赖的服务启动完成才能执行
- mysql5.7
restart: always
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql
container_name: zabbix-web
environment:
- DB_SERVER_HOST=mysql5.7
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- ZBX_SERVER_HOST=zabbix-server
- PHP_TZ=Asia/Shanghai
ports:
- 80:8080
links:
- mysql5.7
- zabbix-server
depends_on:
- mysql5.7
- zabbix-server
restart: always
# 启动
## 进入zabbix工作目录
[root@db02 ~]$ cd /app/zabbix
[root@db02 /app/zabbix]$ docker-compose up -d
## 选项:
-d:放后台运行
-f:指定编排的文件
注意事项:
在要编排的项目/服务目录中,最好只有一个docker-compose.yml文件,如果有多个,可以用-f指定文件,但不建议这样做
官方版MySQL compose
version: '3.1'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123
adminer:
image: adminer
restart: always
ports:
- 8080:8080
links:
- db
访问10.0.0.51:8080
官方es compose
[root@db02 /app/es]$ vim docker-compose.yml
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02
- cluster.initial_master_nodes=es01,es02
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01
- cluster.initial_master_nodes=es01,es02
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
kibana:
image: docker.elastic.co/kibana/kibana:7.5.2
ports:
- 5601:5601
networks: # 所有容器都使用bridge网络模式下的自定义elastic网卡,所以不再需要links模块
- elastic
environment:
SERVER_NAME: kibana.wj.com
ELASTICSEARCH_HOSTS: '["http://es01:9200"]'
volumes:
data01:
driver: local
data02:
driver: local
networks: # 自定义网卡
elastic:
driver: bridge
## 注意:
建议提前准备好elasticsearch和kibana的镜像,因为属实太大
[root@db02 /app/es]$ ll
total 1789124
-rw-r--r-- 1 root root 1344 Nov 19 11:58 docker-compose.yml
-rw-r--r-- 1 root root 790622720 Nov 19 11:32 es.tgz
-rw-r--r-- 1 root root 1041428992 Nov 19 15:36 kibana.tgz
# 利用docker load导入镜像即可
docker-compose常用命令
## 第一次启动
docker-compose up
## 放后台启动
docker-compose up -d
## 指定文件启动
docker-compose -f 文件名.yml up -d
## 查看进程
docker-compose ps
## 查看日志
docker-compose logs
## 查看单个服务日志
docker-compose logs [-f] 容器名称
## 停止
docker-compose stop
## 停止单个服务
docker-compose stop 容器名称
## 启动单个服务
docker-compose start 容器名称
## 重启
docker-compose restart
## 单个服务
docker-compose restart 容器名称
Docker compose单机编排工具的更多相关文章
- Docker:单机编排工具docker-compose [十二]
一.docker-compose的安装 1.安装 curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.re ...
- Docker | 第七章:Docker Compose服务编排介绍及使用
前言 前面章节,我们学习了如何构建自己的镜像文件,如何保存自己的镜像文件.大多都是一个镜像启动.当一个系统需要多个子系统进行配合时,若每个子系统也就是镜像需要一个个手动启动和停止的话,那估计实施人员也 ...
- AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排
一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...
- docker compose服务编排简介、基于发布包构建多个webapi容器 和 基于镜像实现Nginx反向代理webapi
一. docker compose服务编排简介 1. 背景 微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大: A. 要创建镜 ...
- asp.net core容器&mysql容器network互联 & docker compose方式编排启动多个容器
文章简介 asp.net core webapi容器与Mysql容器互联(network方式) docker compose方式编排启动多个容器 asp.net core webapi容器与Mysql ...
- Docker系列--容器编排工具Docker Compose详解
1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置应用程序的服务.然后,使用单个命令,您 ...
- Docker Compose 容器编排
1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...
- Docker Compose 容器编排 NET Core 6+MySQL 8+Nginx + Redis
环境: CentOS 8.5.2111Docker 20.10.10Docker-Compose 2.1.0 服务: db redis web nginx NET Core 6+MySQL 8+N ...
- Docker Compose容器编排
Compose是Docker官方的开源项目,可以实现对Docker容器集群的快速编排.Compose 中有两个重要的概念:服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实 ...
- 走进docker-swarm 带大家快速掌握docker自带编排工具
什么是Docker Swarm? 对比Docker 前面我们介绍过Docker可以理解成是一个我们的服务的独立运行的容器,那么在实际工作中,我们的系统可能是一个微服务应用,系统中根据业务拆分成多个模块 ...
随机推荐
- StoneDB 子查询优化
StoneDB 子查询优化 摘要: 说明如何优化 exists 的 join 查询优化器的处理 核心函数: TwoDimensionalJoiner::ChooseJoinAlgorithm Join ...
- flask - fastapi (python 异步API 框架 可以自动生成swagger 文档) 常用示例 以及整合euraka nacos
flask - fastapi (python 异步API 框架 可以自动生成swagger 文档) 常用示例: 之前使用 flask 需要手动写文档, 这个可以自动生成, fastapi ...
- SpringBoot——常用配置
application.yml配置信息 spring: profiles: active: dev application: name: jwt-token-security # Jackson 配置 ...
- Pod概述
Pod的类型 Pod的类型有如下两个: 自主式Pod:自主式Pod的含义简白来说就是不是被控制器管理的Pod,另一种就是被控制管理的Pod,不被控制器管理的Pod你会发现,它一旦死亡的话,就没有人把它 ...
- 从开源模型、框架到自研,声网 Web 端虚拟背景算法正式发布
根据研究发现,在平均 38 分钟的视频会议里面,大概会有 13 分钟左右的时间用于处理和干扰相关的事情.同时研究也表明在参加在线会议的时候,人们更加倾向于语音会议,其中一个关键原因就是大家不希望个人隐 ...
- CF309E 题解
11:30,过题.12:50,忘记做法. 吃饭时不该看未来日记的,Ynoj 害人不浅(确信). 以上为个人吐槽. 题目大意 不知道题目翻译是个啥...但讨论区有大佬给出了精确的翻译.我改得符合题目背景 ...
- Django-5
Django-5 1.Coookie 1.1 什么是cookie Cookie是储存在浏览器端的一小段文本数据(键值对). 被广泛用于在网站之间传输信息, 当您访问一个网站时,它会将一个Cookie发 ...
- ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
可以先看下列文章 目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文 ...
- JAVA异步编程之Callbacks与Futures模型
JAVA异步编程之Callbacks与Futures模型 一:Callbacks模型 该模型的异步方法,在异步任务完成之后调用,主线程没有异步线程的结果.经典模型如Swing's EventLis ...
- 记录hive一次数据倾斜问题的解决以及思考总结
解决数据倾斜是大数据开发中比较重要的能力,这个现象指的是分布式集群中,由于数据分发的不当,导致某个节点要处理的错误过多,导致整个计算机任务迟迟结束不了,甚至可能节点出现OOM使得任务失败 处理数据倾斜 ...