docker高级篇1(docker n1)

  本篇文章为你整理了docker高级篇1(docker n1)的详细内容,包含有dockerhib docker n1 docker- dockerw docker高级篇1,希望能帮助你了解 docker高级篇1。

  大家好,咱们前面通过十篇的文章介绍了docker的基础篇,从本篇开始,咱们的《docker学习系列》将要进入到高级篇阶段(基础篇大家可以查看之前发布的文章)。

  咱们先来介绍:docker复杂方式安装软件。通过按照mysql\redis两个案例来讲解

  Docker复杂安装说明,两个案例:

  1:安装mysql主从复制

  2:安装redis集群

  本文咱们就先来实现第一个案例:mysql主从复制

  

  大家好,我是凯哥Java(kaigejava),乐于分享,每日更新技术文章,欢迎大家关注“凯哥Java”,及时了解更多。让我们一起学Java。也欢迎大家有事没事就来和凯哥聊聊~~~

  安装mysql主从搭建步骤:

  1:新建主服务器容器实例3307

  命令

  docker run -p 3307:3306 --name mysql-master \

  -v /mydata/mysql-master/log:/var/log/mysql \

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

  -v /mydata/mysql-master/conf:/etc/mysql \

  -e MYSQL_ROOT_PASSWORD=root \

  -d mysql:5.7

  2:进入/mydata/mysql-master/conf目录下新建my.cnf

  修改配置:

  cd /mydata/mysql-master/conf

  vim my.cnf

  ## 输入以下内容

  [mysqld]

  ##设置server_id,同一局域网中需要唯一

  server_id=101

  ##指定不需要同步的数据库名称

  binlog-ignore-db=mysql

  ##开启二进制日志功能

  log-bin=mall-mysql-bin

  ##设置二进制日志使用内存大小(事务)

  binlog_cache_size=1M

  ##设置使用的二进制日志格式(mixed,statement,row)

  binlog_format=mixed

  ##二进制日志过期清理时间。默认值为0,表示不自动清理。

  expire_logs_days=7

  ##跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。

  ##如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致

  slave_skip_errors=1062

  注意文件权限应该是644

  3:修改完配置之后重启master实例

  修改完mysql配置后,记得重启实例

  docker restart mysql-master

  如果重启失败,查看是否因为my.conf文件写错导致。

  或者查看错误日志: docker logs 容器id

  

  修改后,重新启动容器。

  

  4:进入mysql-master容器

  进入到mysql-master。然后登录mysql试试。

  在前台显示进入容器:

  docker exec -it mysql-master /bin/bash

  进入容器后,登录mysql:

  mysql -uroot -p

  5:master容器实例内创建数据同步用户

  mysql创建用户及密码命令:

  命令模板:CREATE USER 用户名@可以访问的ip IDENTIFIED BY 密码

  CREATE USER slave@% IDENTIFIED BY 123456;

  赋权命令模板:GRANT REPLICATION 权限 on 访问ip端口 TO 用户名@‘ip’

  GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO slave@%;

  6:新建从服务器容器实例3308

  命令:

  docker run -p 3308:3306 --name mysql-slave\

  -v /mydata/mysql-slave/log:/var/log/mysql \

  -v /mydata/mysql-slave/data:/var/lib/mysql \

  -v /mydata/mysql-slave/conf:/etc/mysql \

  -e MYSQL_ROOT_PASSWORD=root \

  -d mysql:5.7

  区别:

  1:修改了宿主机的端口映射

  2:修改了容器名称

  3:修改了数据卷挂载的目录

  

  7:进入/mydata/mysql-slave/conf目录下新建my.cnf

  修改配置:

  cd /mydata/mysql-slave/conf

  vim my.cnf

  ## 输入以下内容

  [mysqld]

  ##设置server_id,同一局域网中需要唯一

  server_id=102

  ##指定不需要同步的数据库名称

  binlog-ignore-db=mysql

  ##开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用

  log-bin=mall-mysql-slave1-bin

  ##设置二进制日志使用内存大小(事务)

  binlog_cache_size=1M

  ##设置使用的二进制日志格式(mixed,statement,row)

  binlog_format=mixed

  ##二进制日志过期清理时间。默认值为0,表示不自动清理。

  expire_logs_days=7

  ##跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。

  ##如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致

  slave_skip_errors=1062

  ## relay_log配置中继日志

  relay_log=mall-mysql-relay-bin

  ## log_slave_updates表示slave将复制事件写进自己的二进制日志

  log_slave_updates=1

  ## slave设置为只读(具有super权限的用户除外)

  read_only=1

  重新赋权

  8:修改完配置后重启slave实例

  修改完mysql配置后,记得重启实例

  docker restart mysql-slave

  9:在主数据库这查看主从同步状态

  在mysql主库的镜像中,进入主mysql,然后执行命令:

  show master status;

  10:进入mysql-slave容器

  进入到mysql-master。然后登录mysql试试。

  在前台显示进入容器:

  docker exec -it mysql-slave /bin/bash

  进入容器后,登录mysql:

  mysql -uroot -p

  11:在从数据库中配置主从复制

  在mysql从库的镜像中,进入从mysql,然后执行命令公式:

  change master to master_host=宿主机ip, master_user=在主库上创建用于主从同步的用户账号, master_password=在主数据库创建的用于同步数据的用户密码, master_port=master库的端口, master_log_file=masterlog文件名称, master_log_pos=当前开始点, master_connect_retry=重试;

  公式说明:见注释

  master_host:主数据库的ip地址

  master_port:主数据库的端口

  master_user:在主数据库创建的用于同步数据的用户账号

  master_password:在主数据库创建的用于同步数据的用户的密码

  master_log_file:指定从数据库要复制数据的日志文件。通过查看主数据库的状态,获取File参数;

  master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数

  master_connect_retry:连接失败充值的时间间隔,单位:秒

  12:在从数据库中查看主从同步状态

  查看主从同步第二中方法

  

  show slave status \G;

  13:在从数据库中开启主从同步

  进入从数据库的mysql后,开启主从同步:

  start slave;

  14:查看从数据库状态发现已经同步

  

  15:主从复制测试

  

  

  如操作有问题欢迎去 我的​​​个人博客(www.kaigejava.com)​​​​留言或者​​​微信公众号(凯哥Java)​​​​留言交流哦。

  

  直通车,本系列教程已发布文章,快速到达,《Docker学习系列》教程已经发布的内容如下:

  【图文教程】Windows11下安装Docker Desktop

  【填坑】在windows系统下安装Docker Desktop后迁移镜像位置

  【Docker学习系列】Docker学习1-docker安装

  【Docker学习系列】Docker学习2-docker设置镜像加速器

  【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?

  【Docker学习系列】Docker学习2-常用命令之启动命令和镜像命令

  【Docker学习系列】Docker学习系列3:常用命令之容器命令

  【Docker学习系列】Docker学习4-常用命令之重要的容器命令

  【Docker教程系列】Docker学习5-Docker镜像理解

  【Docker教程系列】Docker学习6-Docker镜像commit操作案例

  【Docker学习教程系列】7-如何将本地的Docker镜像发布到阿里云

  【Docker学习教程系列】8-如何将本地的Docker镜像发布到私服?

  「Docker学习系列教程」9-Docker容器数据卷介绍

  「Docker学习系列教程」10-Docker容器数据卷案例

  Docker学习11-Docker常规方式安装软件

  【Docker学习教程系列汇总】笔记及遇到问题解决文章

  
 

  

  以上就是docker高级篇1(docker n1)的详细内容,想要了解更多 docker高级篇1的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: