创建MySQL Docker容器


Docker容器化的最重要特性之一是它能够创建一个封闭的环境来运行应用程序,其中包含所有必要的依赖项和已安装的软件包。大多数应用程序都需要后端数据库来存储数据点。Oracle提供用于在容器内运行MySQL的Docker镜像,因此它成为测试数据库应用程序的绝佳选择。它提供轻量级的MySQL镜像实例,并在测试完成后具有清理功能。

Docker允许您下载包含MySQL二进制文件和依赖项的镜像,并创建一个虚拟文件系统。请注意,如果您使用`--rm`标志启动Docker容器,则停止容器后,整个文件系统以及容器实例将被删除,因此将此标志与`run`命令结合使用将为您提供测试应用程序的自动清理功能。

在本文中,我们将学习如何创建MySQL Docker容器来测试您的应用程序。

创建MySQL的Docker容器

以下命令创建最新版本的MySQL镜像的实例,并且`--rm`标志有助于在容器停止后消除容器及其文件系统。

sudo docker run −−rm −−name=mysql−test −e MYSQL_ALLOW_EMPTY_PASSWORD=yes −d mysql/mysql−server

在上面的命令中,`--rm`标志指示Docker守护进程在容器停止后删除容器文件系统。`--name`标志为容器提供名称。“`-e MYSQL_ALLOW_EMPTY_PASSWORD=yes`”指示容器创建空的root密码。

执行MySQL Docker容器

MySQL客户端程序使用本地套接字连接,即它们通过localhost连接。要创建本地MySQL连接,可以使用以下命令。

sudo docker exec −it mysql−test mysql −uroot

**exec**指令告诉Docker守护进程在Docker容器内执行指定的命令。`-it`标志指示Docker以交互式shell打开容器。在Docker容器内执行的shell命令是“`mysql -uroot`”。

使用TCP/IP的客户端访问

执行上一步的命令后,Docker会为Docker容器分配一个私有IP地址。它还会在您的系统上创建一个网络接口。这些可以用作创建到服务的TCP/IP连接的端点。

除非您在两个端点之间创建TCP/IP连接,否则您无法访问MySQL服务。为此,您需要找出系统和Docker容器实例的虚拟网络接口的IP地址。您可以使用以下命令来实现。

要查找系统中网络接口的IP地址,请执行:

ip addr show docker0

使用上述命令获得的IP地址将成为客户端应用程序连接到的端点之一,您将使用它为MySQL创建用户。

要查找另一个端点(即MySQL的Docker容器实例的IP地址),可以使用此命令:

sudo docker mysql−test

使用这两个IP地址,您现在可以继续创建TCP/IP连接并创建用户来运行您的客户端应用程序。

要将您的本地系统设置为无需密码的root用户,可以使用以下命令。

在您的系统终端中,执行`mysql-test` Docker容器以访问mysql shell。

sudo docker exec −it mysql−test mysql −uroot

一旦您可以访问mysql shell,在其中执行此命令以将您的本地系统设置为root用户。

create user root@<virtual network interface IP> identified by '';

请注意,上述命令中使用的IP地址应该是我们在前面步骤中找到的本地计算机虚拟网络接口的IP地址。

要授予上面创建的用户所有访问权限,请使用此命令。

grant all on *.* to root@<virtual network interface IP> with grant option;

要完成所有测试后执行自动清理,您可以简单地使用**stop**和**rm**命令停止并删除容器。

总而言之,在本文中,我们讨论了如何创建和启动MySQL Docker容器,以及通过在Linux机器上的虚拟网络接口和Docker容器之间创建TCP/IP连接来访问它。我们创建了root用户并授予其所有访问权限。

更新于:2020年10月27日

434 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告