Docker Compose介绍及部署

1.Compose介绍

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

docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner)

docker-compose运行目录下的所有文件(docker-compose.yml文件、extends文件或环境变量等)组成一个工程,如无特殊指定,工程名即为当前目录名。

一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。

一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。因此需要借助其他工具实现服务发现及负载均衡,比如consul。

docker-compose的工程配置文件默认为docker-compose.yml。可以通过环境变量COMPOSE_FILE -f 参数自定义配置文件,其自定义多个有依赖关系的服务及每个人服务运行的容器

2、为什么要使用docker-compose

使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况,

例如要实现一个web项目,除了web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
compose允许用户通过一个单独docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project)

docker-compose项目由pypthon编写,调用docker服务提供的API来对容器进行管理,因此, 只要所操作的平台支持docker-API,就可以在其上利用conpose来进行编排管理。
简单来说:就是来管理多个容器的,定义启动顺序的,合理编排,方便管理。

3.Docker Compose配置常用字段

3..定义自定义网络-mynet

创建自定义网络

$ docker network create --subnet=172.18.0.1/24 mynet

查看网络信息

$ docker network list

查看指定网络的详细信息

$ docker network inspect mynet

删除指定网络

$ docker network rm mynet

创建容器并测试自定义网络

$ docker run -it --name t1 --net mynet \

--ip 172.18.0.2 --restart=always centos:latest /bin/bash

向docker compose移植

$ mkdir /docker-compose

$ rz

后台启动服务

$ docker-compose up -d //启动

$ docker-compose stop //停止

$ docker-compose down //下线及停止+删除
部署mysql主从集群

1.mysql-master主库

1.1 在宿主机中创建相关目录,用于挂载容器的相关数据

$ mkdir -p /data/mysql-master/{conf,data}

1.2 上传主数据库容器的配置文件my.cnf到/data/mysql-master/conf目录下

$ cd /data/mysql-master/conf

$ rz

将课件mysql/mysql-master目录下的conf上传

启动master节点

$ docker run \

--name mysql-master \

--net mynet \

--ip 172.18.0.3 \

-v /data/mysql-master/conf/my.cnf:/etc/my.cnf \

-v /data/mysql-master/data:/var/lib/mysql \

--privileged=true \

--restart=always \

-e MYSQL_ROOT_PASSWORD=123456 \

-d mysql/mysql-server:5.7

-p 3306:3306 可以不要

删除mysql-master容器并向docker compose移植

docker stop (docker ps -aq) && docker rm $(docker ps -aq)

进入主库容器配置远程连接

$ docker-compose exec --index=1 mysql-master /bin/sh

或者

$ docker exec -it mysql-master /bin/sh

登录mysql服务器,之后输入mysql密码:123456

mysql -u root -p

给用户授权并更新

grant all privileges on *.* to root@'%' identified by '123456';

flush privileges;

mysql-slave从库

在宿主机中创建相关目录,用于挂载容器的相关数据

$ mkdir -p /data/mysql-slave/{conf,data}

上传从数据库容器的配置文件my.cnf到/data/mysql-slave/conf目录下

$ cd /data/mysql-slave/conf

$ rz

将课件mysql/mysql-slave目录下的conf上传

向docker compose移植

docker-compose/docker-compose-v2.yml

进入从库容器配置远程连接

进入mysql容器

$ docker-compose exec --index=1 mysql-slave /bin/bash

或者

$ docker exec -it mysql-slave /bin/bash
登录mysql服务器,之后输入mysql密码:123456

mysql -u root -p

给用户授权并更新

grant all privileges on *.* to root@'%' identified by '123456';

flush privileges;

实现mysql主从集群

先进入mysql-master容器

$ docker exec -it mysql-master /bin/bash

登陆mysql-master主节点

mysql -u root -p

查看主节点关键参数

show master status;

相关推荐
七夜zippoe4 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
金刚猿4 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
JH_Kong5 小时前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
忆~遂愿5 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
Fcy6485 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满5 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠6 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9036 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
陈桴浮海6 小时前
Kustomize实战:从0到1实现K8s多环境配置管理与资源部署
云原生·容器·kubernetes
珠海西格电力科技7 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市