Docker 使用Docker创建MySQL容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 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操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
25天前
|
关系型数据库 MySQL Docker
docker pull mysql:8.0.26提示Error response from daemon: Get “https://registry-1.docker.io/v2/“: EOF错误
docker pull mysql:8.0.26提示Error response from daemon: Get “https://registry-1.docker.io/v2/“: EOF错误
|
1月前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
223 93
|
19天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
10天前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
81 42
|
11天前
|
关系型数据库 MySQL 数据库
Docker下Mysql8数据备份与恢复
通过以上步骤,您可以在Docker环境下高效地备份和恢复MySQL 8数据库。备份数据时,使用 `mysqldump`工具生成逻辑备份文件,并存储到指定目录;恢复数据时,使用 `mysql`工具从备份文件中读取数据并恢复到数据库。自动化脚本和定时任务的配置可以进一步简化备份和恢复的管理过程。
72 41
|
4天前
|
网络协议 API Docker
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
36 23
|
4天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
90 15
|
23天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
1天前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
40 25
|
28天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
220 0