当前位置: 首页 > 编程笔记 >

创建一个MySQL Docker容器

祝英博
2023-03-14
本文向大家介绍创建一个MySQL Docker容器,包括了创建一个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用户,并授予了对其的所有访问权限。

 类似资料:
  • 我正在用TypeScript创建一个名为“三个犯罪”的简单逻辑游戏。 在尝试在TypeScript中预先分配类型化数组时,我尝试执行以下操作: 它给出了错误“表达式项的检查格式”。 也尝试过这样做 而这产生了“无法将任何[]转换为‘罪犯’” 什么是'TypeScript'的方式来做到这一点?

  • 问题内容: 我想创建一个包含一个或多个容器的Docker容器。Docker有可能吗? 问题答案: 在docker内部运行docker绝对是可能的。最主要的是,您将外部容器具有额外的特权(以开头),然后在该容器中安装docker。 查看此博客文章以获取更多信息:Docker-in-Docker。 本条目中描述了一种可能的用例。该博客介绍了如何在Jenkins Docker容器中构建Docker容器。

  • 问题内容: 我试图扩展到符合以创建的类型。最后,我希望有这样的东西可以打印整个字母: 目前,我正在使用类型来计算两个字符之间的距离。因为类型无法使用标量,所以我需要根据Character创建一个String,获取第一个标量的值,然后计算它们之间的距离: 即使这样,我仍然得到不符合协议和的错误。编译器似乎没有选择随附的关联类型: 我想念什么? 问题答案: 如前所述,由于a 可以由多个unicode标

  • 如你所知,Android使用SQLite作为它的数据库管理系统。SQLite是一个嵌入app的一个数据库,它的确是非常轻量的。这就是为什么这是手机app的不错的选择。 尽管如此,它的操作数据库的API在Android中是非常原生的。你将会需要编写很多SQL语句和你的对象与ContentValues或者Cursors之间的解析过程。很感激的,联合使用Kotlin和Anko,我们可以大量简化这些。 当

  • A package is a directory with some code and a package.json file that provides information to Yarn about your package. Most packages use some kind of version control system. The most common one is git

  • 以下步骤假设您已经了解了 Node.js 和 npm 的基本知识。如果对它们不熟悉,可以访问 https://docs.npmjs.com/ 来了解更多关于 npm 的用法。 Weex 提供了一个命令行工具 weex-cli 来帮助开发者使用 Weex。它可以用来快速创建一个空项目、初始化 iOS 和 Android 开发环境、调试、安装插件等操作。 目前 weex-cli 只支持创建 Vue.j