
作为多平台DBA顾问,我花了大量时间学习各种开源和专有数据库中可用的最新功能。我通常使用VirtualBox映像创建沙箱数据库,但是它们会占用相当多的磁盘空间和资源。特别是当我使用数据库集群解决方案之类的东西时,以及当我同时需要多个数据库时。
这就是为什么我最近研究使用Docker容器解决此问题的原因。
Docker以您在船上看到的容器命名。通过选择一种运输方式,它可以确保与运输部门一样的标准化。 Docker是一个开放源代码框架,可以将应用程序和/或数据库打包在轻巧的便携式容器中。这使得在服务器上安装应用程序就像在平板电脑或智能手机上安装移动应用程序一样容易。
所有必需的组件都内置在容器中。通过使用容器,可以隔离资源,限制服务访问和分配进程,以便您可以 例如,容器的大小可以准确指示可以使用多少CPU,内存或I / O负载。
在此博客中,我解释了如何创建一个 PostgreSQL的-Docker容器。
如何开始
好。您想要使用Docker和数据库。
Dockers Hub(GitHub和Google Play商店之间的跨平台)上有数十个数据库可用。想一想:Oracle,SQL Server,Postgres,MariaDB,还有MySQL和Mongo等。
这些数据库有不同的版本,从最新的Beta到较旧的版本。
容器是整体的一部分 微服务架构,这个话题现在在DevOps的议程中排在前列。由于其他原因,因为CI / CD管道的可管理性和几乎前所未有的效率。
所有这些几乎不可避免地导致谈论 Kubernetes -但这对于另一个博客可能更好。
您需要采取什么步骤?
步骤1:下载Docker
首先,您需要下载Docker。这是用于Windows的最新Docker桌面的选择,它需要一个免费的Docker Hub帐户并禁用VirtualBox才能运行,或者是较旧的Docker Toolbox。由于我不想弄乱现有的VirtualBox映像,因此我们打算使用Docker Toolbox。
从下载exe //github.com/docker/toolbox/releases 并运行它。标准安装包括VirtualBox的旧版本和Windows的Git。如果您有新版本的VirtualBox,请跳过它。在我的系统上,安装程序检测到Git,但未检测到VirtualBox。完成后,您可以签出安装Docker Quickstart Terminal(命令行)和Kitematic(GUI)的2个快捷方式。
步骤2:运行Docker快速入门终端
A打开VirtualBox后,您会注意到它已经创建了一个名为default的新计算机。在Windows上,至少在工具箱版本中,所有内容都在此VirtualBox计算机中运行。稍后,初始设置完成,您应该会看到一个ASCII图像 鲸 应该会看到有关默认计算机和IP地址以及交互式外壳的说明。
注意IP地址,以后会派上用场
步骤3:我的第一个容器
现在Docker正在运行,您还可以运行GUI。单击Kitematic,然后显示“我们找不到本机设置……”,选择“使用VirtualBox”。然后跳过“连接到Docker Hub”屏幕,您将看到几个推荐的Docker映像。您可以在Docker Hub上搜索所有可用的映像,有十多个类别,例如操作系统,DevOps工具,数据库和编程语言,甚至还有媒体服务器和Twitter客户端。
终端和Kitematic都检查是否有可用的默认VirtualBox计算机,如果没有,则创建一个。因此,您可以删除VirtualBox计算机并重新开始。但是要小心,因为所有容器信息都在该计算机上。如果您只是在弄乱,那应该不成问题。但是,如果您花了很多时间构建多个容器,则可能需要对计算机进行快照。
步骤4:选择PostgreSQL映像
在Kitematic顶部的搜索框中输入postgres。许多图像可用。我们将使用前者,后者是Postgres的官方图片。单击“创建”左侧的三个点,然后选择“在Docker Hub上查看”。这将打开一个浏览器窗口。如果滚动到“如何使用此图像”部分,请参见 je:
docker run --name some-postgres -e
POSTGRES_PASSWORD=mysecretpassword -d postgres
在“终端”窗口中键入(或复制并粘贴)此文件,确保对“名称”使用两个减号,然后按Return键。
您将看到消息“无法找到图像” postgres:最新的“本地”,然后它将下载并提取大量文件。完成后,它应该显示一个sha256行,一个状态行和一个哈希。
步骤5:测试您的容器
最佳!您已经制作了第一个容器!
但是,就目前而言,它是完全没有用的。我们需要访问容器以从psql运行SQL命令。但是首先让我们看看它是否有效。类型:
docker ps
这将返回容器ID(哈希的前12个字符),图像名称(在这种情况下为Postgres),命令,创建,状态,端口和容器名称(some-postgres)。
步骤6:通过EXEC连接
现在,我们必须实际连接到容器才能使用它。
输入以下内容:
docker exec -it some-postgres bash
现在,我们具有对该容器的root访问权限。在命令提示符下记下容器ID。要访问Postgres,您需要将用户更改为“ postgres”,然后运行psql。要退出psql,请输入:\ q
su postgres
psql
\conninfo
\q
再次输入exit并退出您所在的交互式会话。时报 回到Docker Terminal。要检查容器是否仍在运行并且您确实刚刚离开了交互式会话,请输入:
docker ps
步骤7:安装GUI PgAdmin
您将看到Postgres容器的状态仍处于活动状态。
那是PostgreSQL命令行,但是使用pgAdmin这样的GUI工具呢?如果没有副本,可以从以下位置下载: //www.pgadmin.org/
运行它并创建一个新服务器。在“常规”选项卡上为其命名,然后单击“连接”选项卡。
输入主机名/地址以及您首先在其上运行终端的默认计算机的IP地址。这样可以确保您的容器通过VirtualBox计算机连接,而不是直接连接。输入密码作为mysecretpassword(与创建容器时在命令行上设置的一样)。
选择保存密码,然后单击保存。
和…
这是行不通的!
容器创建命令中缺少标志,这对于pgAdmin的工作非常重要。这是port命令,它分配容器的内部和外部端口。但是首先我们需要清理第一个容器。
rm
如果您尝试运行我们用来再次创建容器的原始命令,则会收到错误消息,指出容器名称仍在使用中。因此,要移除容器,请先停止容器:
docker stop some-postgres
然后使用:
docker rm some-postgres
创建容器时,也可以使用-rm标志。这样一来,退出时就不会保存它。如果您想摆脱一切,请使用:
docker system prune
现在再次运行原始的Docker run命令,但是这次使用-p 5432:5432
docker run --name some-postgres -p 5432:5432 -e _ _POSTGRES_PASSWORD=mysecretpassword -d postgres
类型:
docker ps
检查它是否正在运行。您会注意到,这次,以及不同的容器ID,端口也略有不同
现在,当您在pgAdmin中创建新服务器时,它应该可以毫无问题地找到它。
恭喜!
如果您已完成所有这些步骤:那么您将拥有一个完整的服务器环境,其中PostgreSQL装在一个容器中,您可以在任何地方访问任何内容。
在第二部分中,我将解释一些常见的Docker命令,并介绍典型的Docker操作,例如创建映像,网络和卷。
路由到有效的数据库管理?
现在实现有效数据库管理的途径是什么?有什么陷阱?我们已经为此编写了一份白皮书,以提供许多工具。