使用Docker构建的MySQL容器
2018-02-20 20:27
726 查看
转载过程中,图片丢失,代码显示错乱。为了更好的学习内容,请访问原创版本:https://www.missshi.cn/api/view/blog/5a86a5a2c55cb01126000001Ps:初次访问由于js文件较大,请耐心等候(5s左右)
拉取MySQL官方镜像只需要执行如下命令即可:
默认情况下,会拉取mysql的latest版本。
Ps:目前对应为5.7.21版本。
其中,
当我们启动容器后,可以通过如下方式进行终端命令行:
同时,我们可以使用如下命令来查看MySQL容器的日志:
此外,在
因此,如果我们想要指定一个MySQL的配置文件,我们只需要在主机中创建一个以
假设在宿主机中存在如下配置文件:
Ps:其中,
MYSQL_DATABASE
MYSQL_USER
MYSQL_PASSWORD
MYSQL_ALLOW_EMPTY_PASSWORD
MYSQL_RANDOM_ROOT_PASSWORD
MYSQL_ONETIME_PASSWORD
在宿主机上创建一个数据存储目录,并将其映射到容器中的目录中。
这将数据库文件放在主机系统中的已知位置,并便于主机系统上的工具和应用程序访问文件。
缺点是用户需要确保目录存在,例如,主机系统上的目录权限和其他安全机制配置正确。
使用方法如下:在宿主机中创建一个目录,例如
如下命令启动容器:
数据库备份的方式如下:
创建MySQL专用的文件夹:
修改
执行如下命令启动MySQL:
执行如下命令进行数据库备份:
更多更详细的内容,请访问原创网站:https://www.missshi.cn/api/view/blog/5a86a5a2c55cb01126000001Ps:初次访问由于js文件较大,请耐心等候(5s左右)
本文主要讲解如何利用Docker来运行MySQL容器
下载镜像
拉取MySQL官方镜像只需要执行如下命令即可:
docker pull mysql
默认情况下,会拉取mysql的latest版本。
Ps:目前对应为5.7.21版本。
运行镜像
基本使用
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
其中,
some-mysql表示自己定义的容器名称。
my-secret-pw是我们设置的ROOT用户的密码,
tag是我们对应的镜像版本,默认为latest。
当我们启动容器后,可以通过如下方式进行终端命令行:
docker exec -it some-mysql bash
同时,我们可以使用如下命令来查看MySQL容器的日志:
docker logs some-mysql
指定MySQL配置文件
在MySQL中,启动配置文件默认为:/etc/mysql/my.cnf。
此外,在
/etc/mysql/conf.d文件夹下任意以
.cnf结尾的文件都会被认为是MySQL的配置文件。
因此,如果我们想要指定一个MySQL的配置文件,我们只需要在主机中创建一个以
.cnf结尾的文件,并在宿主机中该文件所在的文件夹映射到Docker容器中
/etc/mysql/conf.d文件夹即可。
假设在宿主机中存在如下配置文件:
/my/custom/config-file.cnf。那么,我们在启动容器时只需要执行如下命令即可:
docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
Ps:其中,
-v表示了卷映射。此外,当配置信息相对较少时,我们不希望编写一个完整的配置文件,而是仅仅希望在命令行中添加一些配置参数即可:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
MySQL中的一些环境变量
MYSQL_ROOT_PASSWORDMYSQL_DATABASE
MYSQL_USER
MYSQL_PASSWORD
MYSQL_ALLOW_EMPTY_PASSWORD
MYSQL_RANDOM_ROOT_PASSWORD
MYSQL_ONETIME_PASSWORD
初始化容器
当我们第一次启动容器时,可以令其启动执行一些.sh,
.sql,
.sql.gz的文件,前提是这些文件存放在容器的
/docker-entrypoint-initdb.d目录下。对于SQL文件的执行,则会在我们环境变量中指定的
MYSQL_DATABASE中执行。
数据持久化
在使用MySQL的容器时,数据持久化有很多种方式,下面我们将描述一种推荐的方式:在宿主机上创建一个数据存储目录,并将其映射到容器中的目录中。
这将数据库文件放在主机系统中的已知位置,并便于主机系统上的工具和应用程序访问文件。
缺点是用户需要确保目录存在,例如,主机系统上的目录权限和其他安全机制配置正确。
使用方法如下:在宿主机中创建一个目录,例如
/my/own/datadir。
如下命令启动容器:
docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
已存在数据库服务的启动
当数据库中已经有数据存在时,在启动时,我们要省略传入MYSQL_ROOT_PASSWORD,此时,已有的数据库不再会被修改。
数据库备份
通常情况下,我们需要对数据库进行备份。数据库备份的方式如下:
docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
推荐用法
执行如下命令拉取MySQL镜像:docker pull mysql
创建MySQL专用的文件夹:
cd /mnt
mkdir mysql
cd ./mysql
mkdir conf
mkdir data
cd ./conf
touch config-file.cnf
修改
config-file.cnf如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character-set-server = utf8mb4
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
执行如下命令启动MySQL:
docker run --name mysql -p 3306:3306 -v /mnt/mysql/data:/var/lib/mysql -v /mnt/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql
执行如下命令进行数据库备份:
DATE=$(date +%Y%m%d)
docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /mnt/mysql/backup/mysql$DATE.sql
更多更详细的内容,请访问原创网站:https://www.missshi.cn/api/view/blog/5a86a5a2c55cb01126000001Ps:初次访问由于js文件较大,请耐心等候(5s左右)
相关文章推荐
- 使用Jenkins来构建Docker容器
- 从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04)
- 使用docker构建jenkins镜像并运行容器
- 使用docker构建jenkins镜像并运行容器
- 从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04)
- 实战案例:构建docker容器集群 (解决方案一:使用自定义网桥连接跨主机容器)
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
- Centos上Docker 使用dockerfile构建容器实现ssh
- 使用Docker 1.12.x构建多容器Web应用程序
- 持续集成:docker下使用jenkins容器构建docker镜像
- 从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04)
- Docker-MySql -- 使用mysqldump 命令备份导出mysql容器中的结构数据
- 使用Dockerfile构建容器
- Docker下Tomcat容器中使用Mysql的方法
- 使用docker构建jenkins镜像并运行容器
- 利用dockerfile构建mysql容器
- Docker学习 -- 使用Docker 的Dockerfile构建tomcat容器,在线部署web项目
- 从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04)
- 使用Dockerfile构建支持ssh服务自启动的容器镜像
- 第一个SpringBoot web 应用使用maven构建Docker镜像并容器化运行