Docker学习2----数据卷
docker数据卷
- 数据卷可在容器之间共享或数据重用
- 卷中更改可以实时生效,任何一个更改都会同步到另一个
- 容器stop后,宿主机的修改待容器启动后也能看到
- 数据卷中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用为止
命令
docker -itd -v 宿主机目录:容器目录:ro --privileged=true
# 宿主机目录如果没有会自动创建
# ro readonly 只读权限,即容器内不能写 默认rw,既能读也能写
docker impect 容器id
# Mounts 查看挂载
卷的继承和共享
docker -itd --privileged=true --volumes-from 容器1id
#继承容器1的挂载规则,即时容器1stop,也不影响
mysql
-
mysql乱码
修改配置conf解决,重启
-
数据卷映射
简单版
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
完整版
docker run -d -p 3306:3306 --privileged=true \
-v /opt/mysql/log:/var/log/mysql \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
Redis
- daemonize no ,该配置和 docker run 中 -d 参数冲突,会导致一直启动失败
- appendonly yes,开启redis持久化
简单版
docker run -d -p 6379:6379 redis:6.0.8
完整版
docker run -d -p 6379:6379 --name myredis --privileged=true \
-v /opt/redis/redis.conf:/etc/redis/redis.conf \
-v /opt/redis/data:/data \
redis:6.0.8 redis-server /etc/redis/redis.conf
mysql主从复制
mysql-master
- docker 命令
docker run -p 3307:3306 --name mysql-master \
-v /opt/mysql-master/log:/var/log/mysql \
-v /opt/mysql-master/data:/var/lib/mysql \
-v /opt/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
- mysql配置
[mysqld]
server_id=101 ## 设置server_id,同一局网需要唯一
binlog-ignore-db=mysql ## 指定不需要同步的数据库
log-bin=mall-mysql-bin ## 开启二进制日志功能
binlog-cache_size=1M ## 设置二进制日志使用内存大小
binlog_format=mixed ## 设置使用的二进制日志格式(mixed statement row)
expire_logs_days=7 ## 二进制日志过期清理时间。默认值为0,表示不自动清理
slave_skip_errors=1062 ## 跳过主从复制中遇到的所有错误或者指定类型的错误,避免slave端复制中断,1062指一些主键重复,1032指主从数据库不一致
-
mysql创建主从复制用户
# 创建用户 CREATE USER 'slave'@'%'IDENTIFIED BY '123456'; # 授权 GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.*TO 'slave'@'%'; # 查看主数据库主从同步状态 show master staus;
mysql-slave
-
docker 命令
docker run -p 3308:3306 --name mysql-slave \ -v /opt/mysql-slave/log:/var/log/mysql \ -v /opt/mysql-slave/data:/var/lib/mysql \ -v /opt/mysql-slave/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7
-
mysql 配置
[mysqld] server_id=102 ## 设置server_id,同一局网需要唯一 binlog-ignore-db=mysql ## 指定不需要同步的数据库 log-bin=mall-mysql-slave1-bin ## 开启二进制日志功能 binlog-cache_size=1M ## 设置二进制日志使用内存大小 binlog_format=mixed ## 设置使用的二进制日志格式(mixed statement row) expire_logs_days=7 ## 二进制日志过期清理时间。默认值为0,表示不自动清理 slave_skip_errors=1062 ## 跳过主从复制中遇到的所有错误或者指定类型的错误,避免slave端复制中断,1062指一些主键重复,1032指主从数据库不一致 relay_log=mall-mysql-relay-bin ## relay_log 配置中继日志 log_slave_updates=1 ## log_slave_updates表示slave将复制事件写进自己的二进制文件 read_only=1 ## slave设置为只读(具有super权限的用户除外)
-
在从数据库修改主从复制
change master to \ master_host='宿主机ip' \ ,master_user='slave' \ ,master_password='123456' \ ,master_port=3307 \ ,master_log_file='mall-mysql-bin.000001' \ # 指定从数据库要复制数据的日志文件,通过查看主数据库的状态,获取File参数 ,master_log_pos=617 \ # 指定从数据库从哪个位置开始复制数据,通过查看主数据库的状态,获取Position参数 ,master_connect_retry=30 # 连接失败重试的时间间隔,单位秒
-
在从数据库中开启主从数据同步
start slave;
-
从数据库查看主从同步状态
# 查看从数据库主从同步状态 show slave status \G; ## 主要看 Slave_IO_Running,Slave_SQL_Running 是否为Yes
播种和收获通常不在一个季节,而中间的过程叫做坚持~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构