从docker hub上可以找到mysql外挂配置和数据目录的一些文档说明

https://hub.docker.com/_/mysql

从该文档中可以了解到,mysql的默认配置为/etc/mysql/my.cnf,该文件中包含了一个额外的数据目录/etc/mysql/conf.d 或者/etc/mysql/mysql.conf.d

先启动一个不带任何挂载的mysql容器

docker run -d -p : -e MYSQL_ROOT_PASSWORD= --name mysql_test2 mysql:5.7.

进入容器

docker exec -it mysql_test2 bash

根据上述docker hub上描述,可以发现/etc/mysql/conf.d/中存在三个文件,分别为docker.cnf,mysql.cnf和mysqldump.cnf,/etc/mysql/mysql.conf.d/下只存在一个文件mysqld.cnf

第一种启动方式

docker run -d -p : -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysql.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= --name mysql_test mysql:5.7.

这样启动的容器中,/etc/mysql/conf.d/mysql.cnf中的内容将被/etc/mysql.my.cnf中文件内容覆盖

第二种启动方式

docker run -d -p : -v /etc/mysql/:/etc/mysql/conf.d/ -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= --name mysql_test mysql:5.7.

这种方式将会把/etc/mysql/conf.d/下面的三个文件替换为外部挂载的my.cnf文件,也就是说,这种方式挂载了目录,容器中的目录与外部文件目录内容一致

第三种启动方式

docker run -d -p : -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysqld.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= --name mysql_test mysql:5.7.

登录都容器中,可以发现/etc/mysql/conf.d/中的文件多了一个mysqld.cnf,且该文件即是我们外挂的my.cnf,而/etc/mysql/mysql.conf.d/mysqld.cnf中的内容依然是之前的

以上三种方式都可以实现外挂配置和数据目录,但首先配置中的文件路径在容器中需要存在,否则mysql容器将无法正常启动。个人觉得第二种看着顺眼点。:)

MYSQL8

mysql8中,/etc/mysql/my.cnf只依赖了/etc/mysql/conf.d/目录,所以上述的第三种方式就行不通了,另外如果配置文件中设置有socket,则client和mysqld设置的socket应该一致,如果去掉,就全部去掉,其他再有错误,根据mysql中错误日志查找下原因,一般都是因为配置

docker run -d -p : -v /etc/mysql/my.cnf:/etc/mysql/conf.d/mysqld.cnf -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= --name mysql_test mysql

如果使用虚拟机,内存比较小时,注意max_connections和innodb_buffer_pool_size不要设置太大,否则启动会非常慢,本例中分别配置了2000和1200M,但当前虚拟机才给分配了1G内存,故启动的时候非常慢,一般前者调整为512 ~1000,后者为物理内存的60%~70%,但本虚拟机不止mysql,还有其他程序,故将两个参数分别改为200和100M,启动速度比之前快了好多倍

docker安装mysql挂载外部配置和数据目录的更多相关文章

  1. 33.Docker安装Mysql及用户配置

    mysql在官方上有两个镜像 这个是一个优化过的mysql 使用这个命令 安装mysql 演示最简单的方式去安装mysql: 这种方式安装的用户名没有,密码没有 docker run -d -p 33 ...

  2. Docker 安装mysql以及外部访问

    (1)因为我们的镜像是linux环境下的,我所在的系统是windows系统.首先通过docker客户端切换到linux环境下. (2)使用docker pull mysql/mysql-server ...

  3. 35.Docker安装Mysql挂载Host Volume

    连个文件系统有块区域Area,我们要做的是把两个Area做文件映射 jesse腾讯云上有个linux的环境,版本比较老了 简书的地址: https://www.jianshu.com/p/b3bf64 ...

  4. docker安装mysql挂载宿主本地目录资源后无法启动的问题

    可能是权限问题,添加--privileged=true参数: docker run -p : --name zsmysql -v $PWD/data:/var/lib/mysql -v $PWD/lo ...

  5. 使用Docker安装mysql,挂载外部配置和数据

    .挂载外部配置和数据安装 mkdir /opt mkdir /opt/mysql mkdir /opt/mysql/conf.d mkdir /opt/mysql/data/ 创建my.cnf配置文件 ...

  6. 【Docker】:使用docker安装mysql,挂载外部配置和数据

    普通安装 1.下载镜像,mysql 5.7 docker pull mysql:5.7 2.创建mysql容器,并后台启动 docker run -d -p 3306:3306 -e MYSQL_US ...

  7. 【Docker】:使用docker安装redis,挂载外部配置和数据

    普通安装 1.拉取镜像,redis:4.0 docker pull redis:4.0 2.创建redis容器名"redistest1",并开启持久化 docker run -d ...

  8. Docker安装mysql镜像并进行主从配置

    Docker安装mysql镜像并进行主从配置 1.下载需要的mysql版本镜像 docker pull mysql:5.6 2.启动mysql服务实例(基本启动) #启动主mysql docker r ...

  9. docker 安装mysql mongo

    Docker安装Mysql 1.拉取镜像 docker pull mysql/mysql-server 2.运行mysql docker run -d -p : --name [Name] [Imag ...

随机推荐

  1. js获取地理位置

    直接上代码: if(navigator.geolocation) { navigator.geolocation.getCurrentPosition( function (position) { v ...

  2. centos搭建集群

    centos 搭建集群步骤 1.使用yum安装所需要的工具 yum -y install wget vim tcl gcc make 2.下载redis并解压 cd /usr/local wget h ...

  3. selenium实现登录百度(自动识别简单验证码)

    需要做的工作 0.工程结构 1.代码: ①baidu_login.py import re import os import sys import time import random from se ...

  4. Image Processing and Analysis_15_Image Registration:HAIRIS: A Method for Automatic Image Registration Through Histogram-Based Image Segmentation——2011

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  5. U盘不能复制4G以上的单个文件如何处理?

    制作好雨后清风U盘启动盘后,有朋友在将雨后清风系统镜像文件拷贝传输至U盘时,会发现U盘提示文件过大,无法进行传输,但是U盘的剩余存储空间明显还足够,这是怎么回事呢? 其实这是U盘文件系统格式的原因,如 ...

  6. Linux学习之九-Linux系统定时任务

    Linux系统定时任务 在一些实际工作中需要机器在某个时间自动执行某个任务,不需要人为在此时刻参与,可以建立一个定时任务. crond 服务是linux下用来周期性的执行某种任务或等待处理某些事件的一 ...

  7. 利用CodeBlocks结合freeglut快速搭建OpenGL开发环境

    利用CodeBlocks结合freeglut快速搭建OpenGL开发环境 2018-12-19 10:15:48 再次超越梦想 阅读数 180更多 分类专栏: 我的开发日记   版权声明:本文为博主原 ...

  8. C++语法备忘

    记录一些C++的语法方便日后查看. 1.C++初始化语法 C++中新增加了两种初始化语法,其中大括号初始化器需要C++11以上的实现,使用时可以加等号,也可以不加,而且大括号中可以不包含任何东西,这种 ...

  9. C语言定义数组时使用枚举作为数组的下标 ——c99功能

    部分参考了https://blog.csdn.net/wq3028/article/details/76204690 同时在电脑上进行验证 //温度,电磁阀传感器序号,方便数组定位 typedef e ...

  10. mysql常用的索引种类

    一.索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度 二.索引类型 Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RT ...