windows下docker compose方式挂载数据卷volume遇到的问题

例子一,windows 下docker desk top部署TDengine

td-compose.yml

yaml 复制代码
version: '3'
services:
  tdengine1:
    image: tdengine/tdengine:latest
    container_name: tdengine1
    hostname: tdengine1
    ports:
        - 6030:6030
        - 6041:6041
        - 6043-6049:6043-6049
        - 6043-6049:6043-6049/udp
    restart: always
    environment:
      TAOS_FQDN: "tdengine1"
      TAOS_FIRST_EP: "tdengine1"
    volumes:
      - D:\tdenginedata\taos.cfg:/etc/taos/taos.cfg
      - D:\tdenginedata\data:/var/lib/taos/
      - D:\tdenginedata\log:/var/log/taos/
      - D:\tdenginedata\corefile:/corefile

运行docker-compose

bash 复制代码
docker compose -p tdengine -f td-compose.yml up -d

问题1:

配置文件映射卷,但没有自己生成配置文件反而报错。

解决方案:bind mount直接挂载目录的方式必须将配置文件先复制下来宿主机,因为它是按宿主机文件同步。

问题2:

部署后出现UDF一直提示重启restart:

bash 复制代码
2023-08-28 08:45:55 08/28 00:45:55.404059 00000118 UDF start to init udfd
2023-08-28 08:45:55 08/28 00:45:55.404068 00000118 UDF udfd LD_LIBRARY_PATH: ::/usr/lib
2023-08-28 08:45:55 08/28 00:45:55.595022 00000118 UDF udfd is initialized
2023-08-28 08:45:55 08/28 00:45:55.626228 00000118 UDF udfd process exited with status 251, signal 0
2023-08-28 08:45:55 08/28 00:45:55.626269 00000118 UDF udfd process restart

解决方案:经官方查询是因为要在目录下创建特殊的socket,而windows目录不能创建这种特殊的目录。在taos.cfg配置文件任意位置添加一行udf 0,关闭UDF。如果实在要用udf要参见下面oceanbase部署volume方式。

例子二,windows 下docker desk top部署Oceanbase

以下是会出现问题的ob-compose.yml

yaml 复制代码
version: '3'
services:
  oceanbase1:
    image: oceanbase/oceanbase-ce:latest
    container_name: oceanbase1
    hostname: oceanbase1
    ports:
        - 2881:2881
    restart: always
    privileged: true
    volumes:
      - //d/obdata/ob:/root/ob
      - //d/obdata/obd:/root/.obd

运行docker-compose

bash 复制代码
docker compose -p oceanbase -f ob-compose.yml up -d

运行后出错提示/root/ob/run/observer.pid: Operation not permitted:

bash 复制代码
[2023-08-29 00:18:28.103] [DEBUG] -- local execute: cat /root/ob/run/observer.pid 
[2023-08-29 00:18:28.117] [DEBUG] -- exited code 1, error output:
[2023-08-29 00:18:28.119] [DEBUG] cat: /root/ob/run/observer.pid: Operation not permitted

看样子应该和上面TDengine一样,有linux的特殊目录文件要创建,因此没办法用bind mount形式,只能改用volume的形式。

最终的ob-compose.yml如下:

bash 复制代码
version: '3'
services:
  oceanbase1:
    image: oceanbase/oceanbase-ce:latest
    container_name: oceanbase1
    hostname: oceanbase1
    ports:
        - 2881:2881
    restart: always
    privileged: true
    volumes:
      - ob:/root/ob
      - obd:/root/.obd
volumes:
      ob:
      obd:
相关推荐
专业白嫖怪2 小时前
什么是docker
运维·docker·容器
qq_452396236 小时前
第十篇:《Dockerfile 最佳实践与镜像瘦身》
docker
Plastic garden6 小时前
Docker(1)
运维·docker·容器
gs801407 小时前
网络隐形杀手:从 Could not connect to SMTP host 报错深度剖析 Docker MTU 黑洞理论与实战
网络·docker·容器
程序猿阿伟8 小时前
《一套完整方法论:搞定图形应用的Docker镜像优化》
数据库·docker·容器
java_logo9 小时前
2026 Docker 国内镜像加速配置教程
运维·docker·容器·docker镜像·docker镜像源·docker镜像加速·docker镜像国内库
IT策士9 小时前
Docker从0到1再到 Kubernetes 实战:第15篇Compose 中的服务依赖、健康检查与启动顺序
docker·容器·kubernetes
“码”力全开10 小时前
深度解析:基于 Docker 与边缘计算的 AI 视频管理平台架构——打通 GB28181/RTSP 协议与“源码交付”的高效集成方案
人工智能·docker·边缘计算
顾默@10 小时前
双系统Ubuntu18.04升级22.04,安装docker进行openclaw安装
运维·docker·容器
木卫二号Coding10 小时前
打包容器有两种方式
docker