如何在Docker容器中运行MySQL:一个简单易用的指南
Docker的一大优点是,您可以快速使用它来试用应用程序,而无需直接在机器上安装它。例如,您可以使用Docker将容器中的数据库作为远程服务器运行,并测试应用程序如何与之交互。
使用Docker容器运行MySQL是一种广泛使用的机制。MySQL是Docker容器中最常用的数据库之一。
当然,主机应该安装Docker,以便将MySQL创建为Docker容器。因此,如果您还没有安装,以下是一些非常有用的指南:
- 如何在Ubuntu上安装Docker引擎:分步指南
- 如何在AlmaLinux/Rocky Linux上安装Docker
1.拉取MySQL Docker镜像
在Docker中创建和测试MySQL服务器的第一件事是从DockerHub中提取MySQL官方镜像。

您可以下载特定版本,如8.0、5.7或5.6,也可以选择最新版本,如以下命令所示:
sudo
码头工人
拉
mysql
最近的
代码语言:
CSS
(
css
)
如果您想要特定版本的MySQL,请替换
最近的
带有版本号。
你可以运行
docker图像
命令查看您从Docker Hub中提取的Docker镜像列表。
sudo docker图像
存储库标记图像ID创建的大小
mysql最新2fe463762680 13小时前514MB
正如您所看到的,MySQL镜像现在可用于我们本地安装的Docker。
2.设置Docker卷
正如您所知,Docker容器原则上是临时的,如果删除容器,任何数据或配置都将丢失。
然而,Docker卷提供了一种机制来持久化在Docker容器内创建的数据。因此,它们是Docker首选的存储Docker容器持久数据的机制。
MySQL将其数据文件存储在
/var/lib/mysql
目录。因此,在部署之前,您需要设置一个Docker卷来持久化您的数据库。否则,当容器重新启动时,您的数据将丢失。
让我们创建一个新卷并命名
mysql数据
。它将用于存储您的所有数据库信息。
sudodocker卷创建mysql数据
您可以通过发出以下命令列出Docker已知的所有卷:
sudo docker卷ls
驱动程序卷名称
本地mysql数据
正如您所看到的,我们新创建的Docker卷名为
mysql数据
已经准备好提供数据。然后,它可以连接到一个新构建的MySQL容器。
3.运行MySQL Docker容器
现在,您的机器上有一个MySQL Docker映像和一个用于保存数据的卷,您可以部署一个容器。您还必须使用设置MySQL根用户的密码
MYSQL_ROOT_PASSWORD
环境变量。
现在,让我们运行容器:
sudodocker run-d--name=mysql服务器-p
3306
:
3306
-v mysql数据:
/var/
lib/mysql-e mysql_ROOT_PASSWORD=your_PASSWORD mysql
代码语言:
JavaScript
(
javascript
)
就是这样。这将启动MySQL实例的最新版本,使用指定的根密码可以从任何地方远程访问该实例。
为了使事情更加透明,让我们分解一下这个语法。首先,以下是该命令中的每个参数的含义:
d
将在后台以分离模式运行此容器。
名称
指定名称
mysql服务器
到您的容器实例。如果不指定,Docker将生成一个随机名称。
3306
到主机上的同一端口。您将能够连接到
127.0.0.1
在端口上
3306
使用MySQL客户端(
mysql
)在您的主机上运行。
v
选项将该数据文件夹绑定到容器卷内(
/var/lib/mysql
)到本地Docker卷(
mysql数据
)您在上一步中创建的。
e
设置环境变量。在这种情况下,MySQL根密码。
mysql
是用于创建容器的图像的名称。
您可以通过列出正在运行的容器来检查容器是否正在运行:
sudo docker ps
CONTAINER ID IMAGE命令创建的状态端口名称
0fc229e3df77 mysql
“docker入口点…”
37
分钟前向上
34
分钟
0
.0
.0
:
3306
->
3306
/tcp,:::
3306
->
3306
/tcp,
33060
/tcp-mysql服务器
代码语言:
JavaScript
(
javascript
)
相关:MySQL:如何使用mysqldump备份(转储)和恢复数据库
4.连接MySQL容器
您可以通过将其附加到容器并运行
mysql
命令这提供了完整的MySQL命令行界面,可以使用所有熟悉的命令和标志。
sudo docker exec-it mysql服务器mysql-u root-p

相关:如何使用命令行在MySQL中创建数据库
您也可以使用
mysql
客户端(如果您已在主机上预先安装)。
注意,默认情况下,当您告诉mysql客户端连接到时,它会尝试使用UNIX套接字进行连接
本地服务器
。所以一定要使用
127.0.0.1
而不是
本地服务器
.
mysql
u
根
-h
127
.0
.0
1.
代码语言:
CSS
(
css
)
当然,您也可以使用基于GUI的客户端(如MySQL Workbench)连接到数据库。例如,在MySQL工作台中的“主机名”中,指定启动Docker容器的机器的IP地址。


相关:如何使用MySQL Workbench在MySQL中创建数据库
当然,在上面显示的主机名示例中,您可以使用MySQL docker容器工作的机器的IP地址,而不是127.0.0.1。
您可以通过运行
命令
没有任何参数的命令。机器的IP地址允许您远程访问MySQL服务器。
5.停止、启动和重新启动MySQL容器
此命令将
暂时停止
正在运行的MySQL容器(稍后可以恢复/重新启动):
sudodocker停止mysql服务器
收件人
开始
MySQL容器,运行:
sudodocker启动mysql服务器
下面的命令用于
重新启动
正在运行的MySQL容器:
sudodocker重启mysql服务器
结论
正如您所看到的,在Docker中运行MySQL比在本地安装MySQL Server更快、更容易。然而,如果您在Docker上使用MySQL进行测试之外的任何事情,还需要考虑更多的事情。
有关更多信息,您可以查看Docker Hub上的MySQL页面和有关该主题的MySQL官方手册。
如果你有任何问题或建议,请告诉我。我很乐意跟你跟进。
如何在Linux上使用Flatpak:全面指南
Flatpak在Linux用户和开发人员中越来越受欢迎,因为它有可能简化软件分发,提高安全性,并在不同的Linux分发版中提供一致的应用程序体验。 让我给你举个例子。有时,您可能需要一个较新版本的应用程序,但该应用程序在您的分发版本的存储库中不可用。或者甚至应用程序本身在那里也不可用。 但是,即使您在系统使用的软件包管理器的某个位置找到了此软件包,您也可能无法安装它。为什么? 因为例如,该程序的最
PC上的虚拟化,通过实际使用案例为初学者解释
在笔记本电脑或PC上运行多个操作系统有多种方法。您可能听说过“虚拟化”和“虚拟机”这两个术语,但不确定它们的含义? 别担心;本文将帮助您澄清这些术语。因此,首先,我们将详细了解不同类型的虚拟化及其好处。 什么是虚拟化及其工作原理 虚拟化 使用软件在计算机硬件上创建抽象层,该抽象层允许将单个计算机的硬件元素(如处理器、存储器、存储器等)划分为多个虚拟计算机,通常称为虚拟机(VM)。 这使您能够最大限
如何将AirPods连接到Windows
虽然AirPods专为苹果设备设计,但它们通过蓝牙运行,这意味着你可以像使用任何其他无线耳机一样使用它们。您只需手动配对AirPods即可在Windows PC上使用。我们是来指导你的。 将AirPods连接到Windows PC 将AirPods连接到Windows台式机或笔记本电脑就像设置任何其他蓝牙设备一样简单。将您的AirPods或AirPods Pro放入充电盒,并按照以下步骤操作: 按
4种方法来检查cron是否在Linux上工作
cron是Linux和类Unix操作系统的作业调度器。它预装在所有Linux发行版上,最适合自动执行重复性任务。 为了使cron正常工作,您必须定期检查该实用程序是否在您的系统上运行良好。您可以使用四种不同的方法来实现这一点,包括检查cron服务状态、检查cron日志、运行测试cron作业以及列出系统上正在运行的进程。 什么是cron? 静默作业处理程序cron自动执行和调度系统任务。配置和维护软
在最近出现SSH漏洞后,Systemd减少了依赖关系
鉴于最近发生的事件,关于systemd间接参与的漏洞,特别是在sshd/xz后门事件(CVE-2024-3094)期间,出现了一场重大辩论,强调了与libsystemd的依赖性相关的潜在安全风险,libsystemd是一个对将服务与systemd集成至关重要的库。 问题的关键在于观察到,libsystemd通过链接到所有systemd服务和任何希望与systemd通信的第三方服务,引入了可能成为漏