docker部署如何将数据存储在容器外,容器删除后数据不丢失,新容器何以继续使用

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.2
【问题描述】docker部署如何将数据存储在容器外
【复现路径】五
【附件及日志】nitializes observer work home x\n",“stream”:“stdout”,“time”:“2024-03-15T02:50:27.030029298Z”}
{“log”:"[ERROR] OBD-1002: Fail to init 127.0.0.1 home path: /root/ob is not empty.\n",“stream”:“stdout”,“time”:“2024-03-15T02:50:27.030062622Z”}:

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

你这个是什么命令呢?启动还是安装

之前容器是删除?而不是停止对吗?

docker部署的ob嘛? 我看使用环境是生产环境呢。。

只要了解一下 OB的相关目录及其作用,部署时数据和日志使用独立的目录 /data/1/data/log1,然后用 docker 映射技术就可以将宿主机的盘的目录映射进容器这个目录上。跟OB启动有关的还有参数文件 etc目录。也要映射。

不过,如果想换一个OB容器就把之前的 OB 节点拉起来还要数据一样这个是做不到的。有多个原因:

  1. OB 升级不只是软件替换,可能还涉及到内部数据更新。
  2. OB 如果换了 IP 是拉不起来的。替换 OB IP 必须采取先加新IP节点后删除老IP节点。

OB 本身就有虚拟化能力,不需要利用 docker 容器去做这种。如果一定要这么用,那就要按照 OB 扩容和缩容的方法来替换 OB 容器节点。
OB 4.2 默认还对租户开启 cgroup 资源隔离功能。放到容器里这个功能可能也发挥不了作用。

好像可以挂载吧,容器里和外面挂载

没有删就是docker stop 后,在docker start 就启动不了,用得命令是这个 docker run -p 2881:2881 --name obstandalone -v $HOME/docker_volume/oceanbase:/root/ob -e MINI_MODE=0 -d oceanbase/oceanbase-ce

我是用的这个启动的容器,在虚拟机中启动的,docker run -p 2881:2881 --name obstandalone -v $HOME/docker_volume/oceanbase:/root/ob -e MINI_MODE=0 -d oceanbase/oceanbase-ce
虚拟机关掉后在用docker start 启动 就启动不起来了

就是挂在外面,然后重启就启动不了

https://github.com/oceanbase/ob-operator
如果要容器化部署的话,还是推荐在 K8s 中通过 ob-operator 管理

这么做的意义何在?

不然数据丢失啊,容器重启数据就没了