创建 MySQL Docker 容器
Docker 容器化最重要的功能之一是它创建了一个有界环境,用于运行安装了所有必要依赖项和包的应用程序。大多数应用程序都需要后端数据库来存储数据点。Oracle 提供了 Docker 镜像,用于在容器内运行 MySQL,因此它成为测试数据库应用程序的绝佳选择。一旦测试完成,它就会提供具有清理功能的轻量级 MySQL 镜像实例。
Docker 允许您下载包含 MySQL 二进制文件和依赖项的镜像,并创建一个虚拟文件系统。请注意,如果您使用 −−rm 标志启动 Docker 容器,则在停止容器后,整个文件系统以及容器实例都会被删除,因此将此标志与运行命令结合使用将为您提供自动清理功能以测试您的应用程序。
在本文中,我们将了解如何创建 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 客户端程序使用本地套接字连接,即它们通过本地主机连接。要创建本地 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> identifier by '';
请注意,上述命令中使用的 IP 地址应为我们在前面的步骤中找到的本地计算机中的虚拟网络接口的 IP 地址。
要向上面创建的用户授予所有访问权限,请使用此命令。
grant all on *.* to root@<virtual network interface IP> with grant option;
要在完成所有测试后执行自动清理,您只需停止容器并使用 stop 和 rm 命令将其删除即可。
总之,在本文中,我们讨论了如何创建和启动 MySQL Docker 容器,并通过在 Linux 计算机上的虚拟网络接口和 Docker 容器之间创建 TCP/IP 连接来访问它。我们创建了 root 用户并授予了它的所有访问权限。