当前位置: 首页 > 知识库问答 >
问题:

Docker中容器之间共享数据库的最佳实践是什么?

岳君之
2023-03-14

有没有人知道Docker中容器之间共享数据库的最佳实践是什么?

我的意思是我想在Docker中创建多个容器。然后,这些容器将以相同的身份在相同的数据库上执行CRUD。

到目前为止,我有两个想法。一种是创建一个单独的容器来运行数据库。另一种方法是直接在安装Docker的主机上安装数据库。

共有1个答案

樊博雅
2023-03-14

很难回答一个“最佳实践”的问题,因为这是一个意见问题。而对堆栈溢出的看法也偏离了主题。

所以我将给出一个具体的例子,说明我在一个严肃的部署中所做的事情。

我正在运行ELK(Elasticsearch,Logstash,Kibana)。集装箱装的。

docker create -v /elasticsearch_data:/elasticsearch_data --name ${HOST}-es-data base_image /bin/true
CONTAINER_ID=`docker run -d --volumes-from ${HOST}-es-data elasticsearch-thing`
ES_IP=`docker inspect $CONTAINER_ID | jq -r .[0].NetworkSettings.Networks.dockernet.IPAddress`
etcdctl set /mynet/elasticsearch/${HOST}-es-0

因为我们在etcd中注册它,所以我们可以使用confd来监视键值存储,监视它的更改,并重写和重新启动其他容器服务。

我有时会使用haproxy来完成这个任务,如果需要更复杂的东西,则使用nginx。这两种方法都允许您指定要“发送”流量的主机集,并具有一些基本的可用性/负载平衡机制。

这意味着我可以相当懒得重新启动/移动/添加elasticsearch节点,因为注册过程会更新整个环境。与此类似的机制用于openshift

  • DB封装在一个容器中,原因与其他元素相同。
  • 用于DB存储的卷是通过本地文件系统的存储容器。
  • “查找”数据库是通过父主机上的etcd完成的,但在其他方面,我将安装占用的空间降到了最低。(我有一个用于docker主机的通用“安装”模板,尽可能避免在其中添加任何额外的内容)

我认为,如果您依赖本地主机拥有(特定的)数据库实例,那么docker的优势就会大大减弱,因为您不再能够在几分钟内打包、测试、部署或“旋转”一个新系统。

(上面的示例--我在10分钟内重建了整个系统,其中大部分是Docker Pull传输图像)

 类似资料:
  • 问题内容: 我有一个活动,这是整个应用程序中使用的主要活动,它具有许多变量。我还有另外两个活动,我希望能够使用第一个活动中的数据。现在我知道我可以做这样的事情: 但是我想共享很多变量,有些可能很大,所以我不想像上面那样创建它们的副本。 有没有一种方法可以直接获取和更改变量而无需使用get和set方法?我记得在Google开发者网站上读过一篇文章,建议不要在Android上使用此功能。 问题答案:

  • 问题内容: 嗨,我正在使用Docker部署一些服务,在这里我想在不同的Docker容器之间共享Docker卷。 假设我有一个Docker容器A在/ data挂载了一个卷。这是A的Dockerfile 据我了解,这会将一个卷附加到容器,但不会将主机目录装载到该容器。因此,该卷内的数据仍位于容器A内。 我有另一个提供ftp服务的容器B。它访问卷/ public下的数据。B的Dockerfile是 现在

  • 我正在使用Docker部署一些服务,我想在不同的容器之间共享Docker卷。 假设我有一个Docker容器a,它在/data处挂载了一个卷。下面是它的DockerFile: 根据我的理解,这会将卷附加到容器,但不会将主机目录挂载到容器。所以这个卷里面的数据仍然在容器A里面。

  • 假设我们有一个带有s的表示一行注释。这些笔记存储在某个地方(本地数据库、网络等),每次调用时,都会根据存储的数据绘制正确数量的s。 现在,假设用户想要删除注释,解析特定 返回到其存储实体的最佳方式是什么? 目前,我知道的唯一方法是使用< code >视图。标签,并有一些管理器将它转换成数据实体,但它看起来相当混乱。 还有其他选择吗?

  • 我开始创建一个系统,我(作为目前唯一的用户)将加载一个动态创建的PHP页面,该页面具有

  • 本文向大家介绍分享20个数据库设计的最佳实践,包括了分享20个数据库设计的最佳实践的使用技巧和注意事项,需要的朋友参考一下 数据库设计是整个程序的重点之一,为了支持相关程序运行,最佳的数据库设计往往不可能一蹴而就,只能反复探寻并逐步求精,这是一个复杂的过程,也是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。下面给出了20个数据库设计最佳实践,当然,所谓最佳,还是要看它是否适合你的程