Docker 使用Docker创建MySQL容器

简介: Docker 使用Docker创建MySQL容器

使用Docker创建MySQL容器

实践环境

Docker version 20.10.5

MySQL5.7

Centos 7.8

创建步骤

1、拉取MySQL镜像

docker pull mysql:5.7

说明:如果不执行该步骤,执行创建MySQL容器时会自动拉取镜像:docker pull mysql:latest

3、创建mysql数据文件,日志文件,配置文件挂载目录

# mkdir -p /usr/local/mysql/data /usr/local/mysql/logs /usr/local/mysql/conf
# chmod -R 755 /usr/local/mysql/data
# chmod -R 755 /usr/local/mysql/logs
# chmod -R 755 /usr/local/mysql/conf

2、编写MySQL数据库配置文件my.cnf

[mysqld]
basedir=/usr/local/mysql   
datadir=/usr/local/mysql/data  
port=3306
character_set_database=utf8
character_set_server=utf8
user=mysql
slow_query_log=on
slow_query_log_file=/usr/local/mysql/logs/slow.log
long_query_time=0.3
default-storage-engine=INNODB
innodb_buffer_pool_size=64M
innodb_purge_threads = 1
innodb_log_buffer_size=2M
innodb_log_file_size = 64M
innodb_thread_concurrency=8 
innodb_lock_wait_timeout = 120
innodb_flush_log_at_trx_commit=1
max_connections=512 
query_cache_size=0
tmp_table_size=18M
thread_cache_size=8
myisam_max_sort_file_size=64G 
myisam_sort_buffer_size=35M
key_buffer_size=25M 
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=16M
log-error=/usr/local/mysql/logs/mysql.log 
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysql]
default-character-set=utf8
character_set_database=utf8
[client]     
port=3306
default-character-set=utf8

说明:该配置文件存放在上文创建的/usr/local/mysql/conf目录下

3、创建MySQL容器数据库

# sudo docker run --restart=always -p 3306:3306 --name db.mysql -v /usr/local/mysql/conf:/etc/mysql -v /usr/local/mysql/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/logs:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mFF!Wmh\& -d mysql:5.7

MySQL环境变量配置说明:

MYSQL_ROOT_PASSWORD : 指定root用户初始密码,例中为 mFF!Wmh&,还可以配置其它
实践时发现,以下3个配置不起作用
MYSQL_DATABASE : 运行时需要创建的数据库名称;
MYSQL_USER : 运行时需要创建用户名,与MYSQL_PASSWORD一起使用;
MYSQL_PASSWORD : 运行时需要创建的用户名对应的密码,与MYSQL_USER一起使用;
以下配置未验证过
MYSQL_ALLOW_EMPTY_PASSWORD : 是否允许root用户的密码为空,该参数对应的值为:yes;
MYSQL_RANDOM_ROOT_PASSWORD:为root用户生成随机密码;
MYSQL_ONETIME_PASSWORD : 设置root用户的密码必须在第一次登陆时修改(只对5.6以上的版本支持)。
MYSQL_ROOT_PASSWORD 和 MYSQL_RANDOM_ROOT_PASSWORD 两者必须有且只有一个。

4、进入容器,登录MySQL

# docker exec -it db.mysql /bin/bash
root@0b023eb3b811:/# root@0b023eb3b811:/# mysql -uroot -pmH1FF\!Kemh\&
mysql> exit
Bye
root@0b023eb3b811:/# exit
#
SHELL 复制 全屏

如上,成功了

注意:登录时,密码如果包含特殊字符,需要进行转义,否则会报类似如下错误

bash: !Kemh: event not found
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
5月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
512 6
|
5月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
671 5
|
5月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
809 4
|
7月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1043 108
|
8月前
|
存储 监控 测试技术
如何将现有的应用程序迁移到Docker容器中?
如何将现有的应用程序迁移到Docker容器中?
605 57
|
5月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
8月前
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
515 59