首页 > 其他分享 >《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务

《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务

时间:2024-12-10 20:54:14浏览次数:10  
标签:容器 compose redis 编排 Compose mysql docker

@

目录

二、高级篇(大厂进阶)

5.Docker-compose容器编排


5.1是什么

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

5.2能干嘛

5.3去哪下

  • 官网
https://docs.docker.com/compose/compose-file/compose-file-v3/
  • 官网下载
https://docs.docker.com/compose/install/
  • 安装步骤
curl -L "https://github.com/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

  • 卸载步骤

5.4 Compose核心概念

5.5 Compose使用的三个步骤

5.6 Compose常用命令

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

5.7 Compose编排微服务


5.7.1改造升级微服务工程docker_boot

  • 随便创建个springboot项目,项目使用redis和mysql,编写查询和添加功能即可
  • mvn package命令将微服务形成新的jar包,并上传到Linux服务器/mydocker目录下
  • 编写Dockerfile
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER zzyy
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为zzyy_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar zzyy_docker.jar
# 运行jar包
RUN bash -c 'touch /zzyy_docker.jar'
ENTRYPOINT ["java","-jar","/zzyy_docker.jar"]
#暴露6001端口作为微服务
EXPOSE 6001
  • 构建镜像
执行命令:docker build -t zzyy_docker:1.6 .

5.7.2不用Compose

  • 单独的mysql容器实例-新建mysql容器实例
docker run -p 3306:3306 --name mysql57 --privileged=true -v /zzyyuse/mysql/conf:/etc/mysql/conf.d -v /zzyyuse/mysql/logs:/logs -v /zzyyuse/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  • 单独的mysql容器实例-进入mysql容器实例并新建库db2021+新建表t_user
docker exec -it mysql57 /bin/bash
mysql -uroot -p
create database db2021;
use db2021;
CREATE TABLE `t_user` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用户名',
  `password` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '密码',
  `sex` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '性别 0=女 1=男 ',
  `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认0不删除,1删除',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
  • 单独的redis容器实例
docker run  -p 6379:6379 --name redis608 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
  • 微服务工程
docker run -d -p 6001:6001 zzyy_docker:1.6
  • 上面三个容器实例依次顺序启动成功

5.7.3swagger测试

  • swagger测试
http://localhost:你的微服务端口/swagger-ui.html#/

5.7.4上面成功了,有哪些问题?

5.7.5使用Compose

  • 编写docker-compose.yml文件
version: "3"
services:
  microService:
    image: zzyy_docker:1.6
    container_name: ms01
    ports:
      - "6001:6001"
    volumes:
      - /app/microService:/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: 
      MYSQL_PASSWORD: 
    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_boot-写YML-通过服务名访问,IP无关
    把springboot项目配置文件中数据库的ip换为mysql,redis的ip换为redis

  • 第二次修改微服务工程docker_boot-mvn package命令将微服务形成新的jar包,并上传到Linux服务器/mydocker目录下

  • 第二次修改微服务工程docker_boot-编写Dockerfile

# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER zzyy
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为zzyy_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar zzyy_docker.jar
# 运行jar包
RUN bash -c 'touch /zzyy_docker.jar'
ENTRYPOINT ["java","-jar","/zzyy_docker.jar"]
#暴露6001端口作为微服务
EXPOSE 6001
  • 第二次修改微服务工程docker_boot-构建镜像
执行命令:docker build -t zzyy_docker:1.6 .
  • 执行 docker-compose up或者执行 docker-compose up -d

  • 进入mysql容器实例并新建库db2021+新建表t_user

docker exec -it 容器实例id /bin/bash
mysql -uroot -p
create database db2021;
use db2021;
CREATE TABLE `t_user` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用户名',
  `password` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '密码',
  `sex` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '性别 0=女 1=男 ',
  `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认0不删除,1删除',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
  • 测试通过
  • Compose常用命令
Compose常用命令
docker-compose -h                           # 查看帮助
docker-compose up                           # 启动所有docker-compose服务
docker-compose up -d                        # 启动所有docker-compose服务并后台运行
docker-compose down                         # 停止并删除容器、网络、卷、镜像。
docker-compose exec  yml里面的服务id                 # 进入容器实例内部  docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps                      # 展示当前docker-compose编排过的运行的所有容器
docker-compose top                     # 展示当前docker-compose编排过的容器进程
docker-compose logs  yml里面的服务id     # 查看容器输出日志
dokcer-compose config     # 检查配置
dokcer-compose config -q  # 检查配置,有问题才有输出
docker-compose restart   # 重启服务
docker-compose start     # 启动服务
docker-compose stop      # 停止服务
  • 关停

注意点1:
docker-compose.yml文件内容器加载顺序由depends_on控制,案例里会先启动redis -> mysql -> 微服务

注意点2:
docker-compose.yml文件编排好后,最后执行命令:docker-compose up -d时就是把文件内命令转化为你认识的一条条类似docker run -d -p 6379:6379 redis:6.0.8这样的命令进行操作

注意点3:
有一个重要的检查docker-compose.yml文件编写是否语法有误的命令:dokcer-compose config -q # 检查配置,有问题才有输出

本人其他相关文章链接

1.《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
2.《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
3.《docker高级篇(大厂进阶):3.Docker微服务实战》
4.《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
5.《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
6.《docker高级篇(大厂进阶):6.Docker轻量级可视化工具Portainer》
7.《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
8.docker基础篇:安装tomcat
9.docker基础篇:安装mysql单机版
10.docker基础篇:安装redis单机版
11.docker高级篇(大厂进阶):安装mysql主从复制
12.docker高级篇(大厂进阶):安装redis集群

重要信息


标签:容器,compose,redis,编排,Compose,mysql,docker
From: https://www.cnblogs.com/bigcat26/p/18598006

相关文章

  • 《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令
    @目录二、高级篇(大厂进阶)7.Docker容器监控之CAdvisor+InfluxDB+Granfana7.1原生命令7.2是什么CAdvisorInfluxDBGranfana总结7.3compose容器编排,一套带走本人其他相关文章链接二、高级篇(大厂进阶)7.Docker容器监控之CAdvisor+InfluxDB+Granfana7.1原生命令操作问......
  • Jetpack Compose 入门与深入理解(一)
    JetpackCompose命令式UI(ImperativeUI)什么是命令式UI命令式UI的缺点声明式UI(DeclarativeUI)什么是声明式UI声明式UI的优点声明式UI发展历程命令式UI(ImperativeUI)什么是命令式UI在Android开发中,我们目前采用命令式UI开发模式<!--代码经过简化--><LinearLa......
  • 【docker】容器编排工具docker-compose常用命令
    一、官网https://docs.docker.com/compose/install/  二、命令介绍$docker-compose--helpDefineandrunmulti-containerapplicationswithDocker.Usage:docker-compose[-f<arg>...][--profile<name>...][options][--][COMMAND][ARGS...]docker......
  • 云原生存储编排器Rook
    作者:尹正杰版权声明:原创作品,谢绝转载!否则将追究法律责任。目录一.Rook概述1.rook概述2.Rook和K8S版本对应关系二.k8s对接Rook1.部署Rook2.K8S对接ceph一.Rook概述1.rook概述R......
  • spoil、decompose、decay和rot的区别
    spoil是食物变质:keepthehamfrom spoiling(让火腿不要变质)。变质不等同于腐败,食物馊了就是变质了,但是馊了的食物不见得就长出霉菌。decompose表示有机体腐败时,等同于rot。rot是鲜活有机体因为细菌或真菌的影响,分解,失去生命力的过程:fruitwasleftto rotinwarehouses(仓......
  • Jetpack Compose学习(14)——ConstraintLayout约束布局使用
    原文地址:JetpackCompose学习(14)——ConstraintLayout约束布局使用-Stars-One的杂货小窝本文阅读之前,需要了解ConstraintLayout的使用!各位可查阅我的ConstraintLayout使用一文本系列以往文章请查看此分类链接Jetpackcompose学习引入依赖implementation("androidx.c......
  • docker-compose yaml version
    在DockerCompose文件中,version字段是必需的,它告诉DockerCompose工具使用哪个版本的YAML文件格式来解析Compose文件。目前,DockerCompose支持的版本有1, 2, 2.x, 3, 3.x等。其中,3及以上版本支持更多的特性,比如多服务网络 FROMopenjdk:8-jreRUNmkdir/app#复制jar......
  • Compose组件之Box
    在JetpackCompose中,Box是一个非常常用的布局组件,它可以将子组件层叠起来,类似于一个容器。通过Box,我们可以轻松地进行元素的定位、堆叠等操作。今天,我们就来详细了解一下Box的用法,以及如何通过Box来实现一些常见的UI效果。1.Box的基础用法Box是一个非常灵活的布局容器,它......
  • centos7+docker dock-compose使用
    简介Docker-Compose是Docker官方的开源项目,用于实现Docker容器集群的快速编排。Compose简介Compose是用于定义和运行多容器Docker应用程序的工具,通过Compose,可以使用YML文件来配置应用程序所需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有服务。Comp......
  • 无法科学上网导致docker compose up -d报错,已解决
    MilvusMilvus是一款开源的向量数据库,具有高度的灵活性、稳定可靠性以及高速查询等特点。它支持针对TB级向量的增删改操作和近实时查询,适用于大规模向量数据的存储和检索。Milvus的官网:https://milvus.ioGithub上Milvus的链接:https://github.com/milvus-ioDockerDocker是......