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

带有Mariadb的Docker容器-容器会被阻塞并丢失数据吗

薛弘壮
2023-03-14

我想我可以按照我另一篇文章的建议使用合订本

docker-撰写mariadb外部卷映射问题

但是我知道容器应该是无状态的。所以看来我的想法是错误的?

我不知道会发生什么样的灾难性故障,所以如果容器被封砖,我有可能会丢失所有数据吗?或者有没有办法使用外存恢复?

如何处理这种情况?我有一个管理迁移的模式表,所以不希望该表是新的,并从square 1开始

问题:我应该让云上的Mariadb容器写到它喜欢的任何地方吗?还是写到主机文件夹?

我的泊坞窗 -撰写片段

  mariadb:
    image: mariadb:10.4
   ...
    environment:
      ..
    logging:
...
    networks:
      - backend
    restart: on-failure
    volumes:
      - maria_volume:/var/lib/mysql
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
  
# Volumes
volumes:
  maria_volume:

另一个版本是(./mariadb而不是卷部分中的maria_volume)

    networks:
      - backend
    restart: on-failure
    volumes:
      - ./mariadb:/var/lib/mysql
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
  

共有1个答案

林龙野
2023-03-14

您的应用程序通常需要将数据保存在某个地方。拥有一个装载了存储的关系数据库容器是可以的。在生产环境中,您可以选择运行非容器数据库或使用云托管的数据库(如果这更能满足您的需求)。

我觉得实际的存储机制非常健壮,无论是对命名卷还是绑定挂载的主机目录。在这两种情况下,您可能都不会遇到数据损坏问题。像往常一样,如果数据很重要,请确保您有备份。

在使用命名卷和主机目录之间没有明确的选择。主机目录可能更容易备份和恢复;在某些平台上,命名卷会更快。在这两种情况下,在正常操作中,数据将在销毁和重新创建容器后继续存在。使用< code>docker命令销毁命名卷的状态会更容易一些,这取决于您的具体使用情况,可以指向两个方向。

我偶尔会遇到Docker的内部状态被破坏的情况,当这种情况发生时,最简单的解决方法是删除整个/var/lib/docker树并重新开始(Docker Desktop应用程序中有一个等效的“重置”按钮)。此路径也会丢失命名卷。在本机Linux人们普遍观察到,实际的命名卷存储只是一个目录,因此您可以保留它。

 类似资料:
  • 我试图用PHP、MariaDB和一个教程创建一个PHP开发环境,该教程建议使用Adminer进行数据库管理。因此,我生成了我的文件如下: 但是,当我为MariaDB设置卷时,在管理员登录页面中出现了一个错误。当我没有设置它们时,它似乎工作得很好。

  • 我在PCF和我们的组织中部署了大约9个微服务,由于安全限制,容器与容器之间的通信被阻塞。所有的微服务都在一个loadbalancer和单个实例上。 我应该使用PCF提供的服务注册表进行内部微服务通信,还是在此场景中没有强制使用服务注册表。我应该使用Feign接口调用另一个微服务,还是可以使用常规的resttemplate调用该微服务?在这种情况下使用Service registry有什么好处?

  • 我使用docker撰写启动一个mysql da和一个springstart应用程序。 这是我的docker-compose.yml 这是我的application.properties 在这里,我创建了jdbi: 不管我怎么做,我都无法让集装箱在码头内相互交谈。如果我单独启动sql,我可以在主机中看到连接(在datagrip中)。如果我从容器中运行java程序,它会看到主机中的数据库。即使我运行d

  • 我拉Ubuntu图像使用。 我使用连接到容器,然后创建一个文件,然后退出。 再次,当我执行docker exec文件丢失。 如何维护该容器中的文件,我尝试了dockerfile和标记docker图像,效果很好。 但是,有没有其他方法可以让docker容器中的文件保持更长的时间?

  • 问题内容: 尽管有Docker的Interactive教程和常见问题解答,但当容器退出时,我仍然丢失了数据。 我已经按照以下说明安装了Docker:http : //docs.docker.io/en/latest/installation/ubuntulinux 在ubuntu 13.04上没有任何问题。 但是退出时它将丢失所有数据。 我还通过相同结果的交互式会话对其进行了测试。我忘记了什么吗?

  • 本文向大家介绍Docker 仅数据容器,包括了Docker 仅数据容器的使用技巧和注意事项,需要的朋友参考一下 示例 仅数据容器已过时,现在被视为反模式! 在过去的日子里,在使用Docker的volume子命令之前以及在可以创建命名卷之前,当在任何容器中都不再有对它们的引用时,Docker删除了这些卷。仅数据容器已过时,因为Docker现在可以通过各种docker volume子命令创建命名卷以及