创建一个MySQL Docker容器

Docker容器化的最重要功能之一是,它创建了一个有限的环境,用于在安装所有必需的依赖项和软件包的情况下运行应用程序。大多数应用程序需要后端数据库来存储数据点。Oracle提供了可在容器中运行MySQL的Docker映像,因此它成为测试数据库应用程序的理想选择。测试完成后,它将为轻量级的MySQL Image实例提供清理功能。

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守护进程在停止后删除Container文件系统。−name标志为容器提供名称。“ -e MYSQL_ALLOW_EMPTY_PASSWORD =是”指示容器创建一个空的root密码。

执行MySQL Docker容器

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

sudo docker exec −it mysql−test mysql −uroot

EXEC指令告诉码头工人守护进程来执行多克尔容器内指定的命令。-it标志指示Docker在交互式shell中打开Container。在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 Container来访问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 Container并使用stoprm命令将其删除即可。

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