Docker安装MySQL 8.0并挂载数据及配置文件
安装部署环境
- Ubuntu 18.04.3 LTS
- Docker 19.03.2
- MySQL latest(8.0.17)
下载镜像
# docker从仓库中拉取最新版的mysql镜像,如果没加标签的话,默认获取最新的版本
Docker pull mysql
挂载数据卷以及配置文件
Docker容器原则上是短暂的,如果容器被删除或损坏,任何数据或配置都将丢失。因为,我们需要将 Docker 内的 MySQL 数据文件以及配置文件转移到宿主机的指定路径。
每个人部署的 MySQL 内,可能文件路径不一致。我们可以先创建个测试的 MySQL 容器,然后再根据查找出的文件具体路径位置,重新创建我们符合我们需求的 MySQL 容器,命令如下:
docker run --name mysqltest \
-p 3307:3306 -e MYSQL_ROOT_PASSWORD=root \
-d mysql
进入Docker容器内
docker exec -it mysqltest bash
确定Docker内 MySQL 文件相关路径
根据官网说明:如果要挂载 MySQL 配置文件的话,我们必须在物理机上存在着该配置文件。
# 查找Docker内,MySQL配置文件my.cnf的位置
mysql --help | grep my.cnf
# 显示如下,意思是路径按优先排序,会是在以下路径里:
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
# 配置文件的路径不一定都一样,有些博客介绍的位置是在/etc/my.cnf。而本人Ubuntu系统上,实际存在位置是在/etc/mysql/my.cnf
查找数据文件位置
用于在容器上运行docker inspect命令的JSON输出具有一个 Mount密钥,其值提供了有关数据目录卷的信息:
docker inspect mysqltest
...
"Mounts": [
{
"Type": "volume",
"Name": "4f2d463cfc4bdd4baebcb098c97d7da3337195ed2c6572bc0b89f7e845d27652",
"Source": "/var/lib/docker/volumes/4f2d463cfc4bdd4baebcb098c97d7da3337195ed2c6572bc0b89f7e845d27652/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
...
输出显示源文件夹:/var/lib/docker/volumes,表示已安装在 /var/lib/mysql容器内的服务器数据目录中。
创建本地路径并挂载Docker内数据
接下来,我们需要在物理机上,创建指定好一个数据和配置文件的挂载路径。
mkdir -p /home/docker/mysql/conf && mkdir -p /home/docker/mysql/datadir
创建好本地的挂载数据路径后,我们再将测试容器里 MySQL 的配置文件复制到该路径。日后需改配置,直接在挂载路径的配置文件上修改即可。
docker cp mysqltest:/etc/mysql/my.cnf /home/docker/mysql/conf
创建 MySQL 容器并启动
解决了配置文件的问题,就可以根据需求创建我们的 MySQL 容器并挂载数据了。
docker run --name mysql1 \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \
--mount type=bind,src=/home/docker/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf \
--mount type=bind,src=/home/docker/mysql/datadir,dst=/var/lib/mysql \
--restart=on-failure:3 \
-d mysql
- --name:为容器指定一个名字
- -p:指定端口映射,格式为:主机(宿主)端口:容器端口
- -e:username="xxx",设置环境变量
- --restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
- -mount:绑定挂载
- -d:后台运行容器,并返回容器 id
网上许多人的博客写的挂载 MySQL数据卷方法,采用的是
--volume,但是在最新的MySQL官方Docker搭建MySQL文档中,建议我们大家使用--mount,因为研究表明它更易于使用。故我们根据官网推荐的方法,这里也采用--mount挂载。
查看在运行的容器
docker ps
们可以看到mysql1容器正在运行,包括之前我们创建的测试容器。
Docker安装MySQL 8.0并挂载数据及配置文件的更多相关文章
- 安装docker及使用docker安装其他软件(手动挂载数据卷)
中秋明月,豪门有,贫家也有,极慰人心 Linux安装docker 可以参考官方的安装文档 centos安装docker: https://docs.docker.com/engine/install/ ...
- docker 安装 MySQL 8.0
1.查找镜像 查找Docker Hub上的mysql镜像 X230:~$ docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED m ...
- docker创建mysql容器,并挂载数据+配置
新建:/my/mysql/my.cnf (准备挂载配置文件用) 将以下内容拷贝进去(或者启动一个docker的mysql,并且把/etc/mysql/my.cnf中的内容拷贝出来) # Copyrig ...
- docker安装MySQL 8.0及初始化错误处理
Preface Several days ago,I've implement a docker environmnet,I'm gonna Install a MySQL 8. ...
- centos docker 安装mysql 8.0
centos 版本 CentOS Linux release 7.5.1804 (Core) 内核版本: 3.10.0-862.el7.x86_64 下载最新版mysql docker pull m ...
- docker 安装mysql 并将文件挂载到本地
首先准备好挂载的文件路径 执行mysql创建以及挂载的命令(这里还可以使用-e环境变量来创建新用户MYSQL_USER,MYSQL_PASSWORD) docker run -d -p : --res ...
- Docker搭建Redis5.0并挂载数据
记录 Docker 搭建 Redis5.0 并挂载数据过程,搭建参考自 Docker Hub 系列文章欢迎访问:https://www.itwxe.com/posts/9e76db89/ 一.简单挂载 ...
- Docker学习实践 - Docker安装MySql数据库
Docker安装MySQL数据库 1.Ubuntu安装MySQL安装 (1)安装编译源码需要的包 sudo apt-get install make cmake gcc g++ bison libnc ...
- Docker安装MySql完整教程、实操
docker:官网 docker:镜像官网: 镜像官网可以所有应用,选择安装环境:会给出安装命令,例如:docker pull redis 默认拉取最新的版本(指定版本:docker p ...
随机推荐
- Android RecyclerView SearchView基本用法1
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/82 背景: 做了很多年的app开发,貌似没见过没有搜索功能 ...
- 关于ssh的几个功能
这个有许多介绍的. 通过ssh可以实现远程shell命令行登录,x window登录,端口转发,scp文件复制,本地与远程命令间的管道连接,sftp文件传输与管理,包括同步,以及rsync文件同步,还 ...
- leetcode-10
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的 ...
- Python 变量与运算符
变量 基本概念: 1. 变量,名字,数据的唯一标识2.变量命名: 字母.数字.下划线: 不能以数字开头: 区分大小写: 不能使用保留字和关键字: 命名要有意义:(多个单词时,推荐使用下划线连接) 3. ...
- AJAX-CORS 跨域
1.CORS就是一套AJAX跨域问题的解决方案. 2.CORS的原理: CORS定义一种跨域访问的机制,可以让AJAX实现跨域访问. 3.CORS浏览器支持情况: Chrome 3+ Firefox ...
- JS获取url请求参数
JS获取url请求参数,代码如下: // 获取url请求参数 function getQueryParams() { var query = location.search.substring(1) ...
- 《机器学习实战之第二章k-近邻算法》
入坑<机器学习实战>: 本书的第一个机器学习算法是k-近邻算法(kNN),它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据 ...
- Spring 框架基础(02):Bean的生命周期,作用域,装配总结
本文源码:GitHub·点这里 || GitEE·点这里 一.装配方式 Bean的概念:Spring框架管理的应用程序中,由Spring容器负责创建,装配,设置属性,进而管理整个生命周期的对象,称为B ...
- Selenium(六):frame切换、窗口切换
1. 切换到frame index.html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...
- console的各种输出格式
console.log('%c',CSS样式)输出css样式 console.log('%s',字符串) 字符串格式化 %d%i 整数格式化: console.log('%o',节点) 可扩展的dom ...