当前位置: 首页 > news >正文

【Docker】Docker-Compose基础使用说明

1、Docker-Compose

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

官网文档
安装:[[Docker#2、docker-compose 安装 | 安装DockerCompose]]

# 安装
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
# 授权
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
# 测试
docker compose version

2、三个步骤

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

3、常用命令

命令描述
docker-compose up命令聚合每个容器的输出,命令退出时,所有容器都将停止
docker-compose up -d在后台启动容器并使它们保持运行
docker-compose logs -f查看该容器的启动的日志打印(日志从头打印)
docker logs -f container_id查看某一容器的启动的日志打印(日志从头打印)
docker logs -f --tail 数量 container_id查看某一容器的启动的日志打印(查看最后n条日志打印)
docker-compose stop停止compose服务
docker-compose restart重启compose服务
docker-compose kill杀掉 compose服务
docker-compose ps查看compose服务状态
docker-compose rm删除 compose 服务
docker-compose down停止并删除容器、网络、卷、镜像
docker-compose config检查配置
docker-compose config -q检查配置,有问题才输出

4、Compose 编排微服务

# docker-compose.yml
version: "3"

services:
	microService:
		image: WeiYi_docker:1.6
		ports:
			- "6001:6001"
		volumes:
			- /app/micorService:/data
		networks:
			- atguigu_net
		depends_on:
			- redis
			- mysql

	redis:
		image: redis:6.0.8
		ports:
			- "6379:6379"
		volumes:
			- /app/redis/redis.conf:/etc/redis/redis.conf
			- /app/redis/data:/data
		networks:
			- atguigu_net
		command: redis-server /etc/redis/redis.conf

	mysql:
		image: mysql:5.7
		environment:
			MYSQL_ROOT_PASSWORD: '123456'
			MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
			MYSQL_DATABASE: 'db2021'
			MYSQL_USER: 'WeiYi'
			MYSQL_PASSWORD: 'WeiYi0037'
		ports:
			- "3306:3306"
		volumes:
			- /app/mysql/db:/var/lib/mysql
			- /app/mysql/conf/my.cnf:/etc/my.cnf
			- /app/mysql/init:/docker-entrypoint-initdb.d
		networks:
			- atguigu_net
		command: --default-authentication-plugin=mysql_native_password # 解决外部无法访问

networks:
	atguigu_net:


# 检查配置是否正确
docker-compose config -q
# 开始构建
docker-compose up -d

5、监控平台 - CIG

# docker-compose.yml
version: '3.1'  # 必须是3.0以上才能运行docker-compose

volumes:
  grafana_data: {}  # 实现了grafana数据的挂载

services:  # 表示我们要启动的服务,即要docker run的内容,多个实例服务
  influxdb:
    image: tutum/influxdb:0.9
    restart: always
    environment:
      - PRE_CREATE_DB=cadvisor  # 预先创建一个数据库,创建一个数据库一样
    ports:
      - "8083:8083"  # 对外是8083
      - "8086:8086"  # 内部即8086
    volumes:
      - ./data/influxdb:/data

  cadvisor:
    image: google/cadvisor
    links:
      - influxdb:influxsrv
    command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086  # 这就是相当于mysql选择的那个驱动
    restart: always
    ports:
      - "8080:8080"
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

  grafana:
    user: "104"
    image: grafana/grafana
    user: "104"
    restart: always
    links:
      - influxdb:influxsrv
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - HTTP_USER=admin
      - HTTP_PASS=admin
      - INFLUXDB_HOST=influxsrv
      - INFLUXDB_PORT=8086
      - INFLUXDB_NAME=cadvisor
      - INFLUXDB_USER=root
      - INFLUXDB_PASS=root

相关文章:

  • 用python抠图
  • Java Object类下getClass()方法具有什么功能呢?
  • MongoDB安装使用教程
  • 封装js一些常用的方法(默认值、数组、判空、数值等等)
  • OpenCV之图片预处理方法
  • 跟我学Python图像处理丨傅里叶变换之高通滤波和低通滤波
  • 分布式监控系统——Zabbix(2)部署
  • 机械学习房价预测实战(mse 回归 交叉验证)
  • 未来5年,这个职业最有可能被BI软件替代,网友:现在跑还来得及
  • 【热力学】基于Matlab模拟生成热晕
  • 『Halcon与C#混合编程』第二章02_迈德威视工业相机SDK图像变量转换
  • NASA成功撞击1100公里外小行星!人类史上首次,主动避免恐龙覆辙,马斯克亦有贡献...
  • PHP Iterable 可迭代对象
  • 5. Hadoop集群操作
  • 数据库安装与配置
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【技术性】Search知识
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • ES6 学习笔记(一)let,const和解构赋值
  • Hibernate最全面试题
  • javascript从右向左截取指定位数字符的3种方法
  • Java深入 - 深入理解Java集合
  • js ES6 求数组的交集,并集,还有差集
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • laravel with 查询列表限制条数
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Linux快速复制或删除大量小文件
  • Lucene解析 - 基本概念
  • markdown编辑器简评
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • v-if和v-for连用出现的问题
  • vue2.0项目引入element-ui
  • webpack4 一点通
  • 大主子表关联的性能优化方法
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 运行时添加log4j2的appender
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #pragma预处理命令
  • (+4)2.2UML建模图
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (06)金属布线——为半导体注入生命的连接
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (rabbitmq的高级特性)消息可靠性
  • (超详细)语音信号处理之特征提取
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net(C#)中String.Format如何使用
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET单元测试