运行 MongoDb 在本地 Docker/Kubernets 安装,安装磁盘本地不起作用

Running MongoDb on local Docker/Kubernets install, mounting disk local doesn't work

我正在尝试 运行 这个,在创建文件夹 \data\MongoDb\database 并与所有人共享后(Windows 10 似乎不想与本地系统共享,但是无论如何都应该有效)

尝试使用 'Create Container error' 创建容器时崩溃我认为我已经以某种方式指定了关于如何安装声明的映射 - 我正在尝试 /data/db 我已经如果我删除底部的 'volumeMounts' 部分,确认那里有数据 - 但如果我没有,那么它怎么知道那是我想要它安装的地方?如果我不添加该文件夹,它似乎不会挂载该文件夹,并且服务器在这种情况下工作正常,但当然,它在服务器内部有数据,当它断电并备份 POOF!去你的数据。

这是我正在使用的 YAML 文件

apiVersion: v1
kind: Service
metadata:
  name: mongodb
  labels:
    app: mongodb
spec:
  ports:
    - port: 27017
      targetPort: 27017
  selector:
    app: mongodb
  type: LoadBalancer
  externalIPs:
    - 192.168.1.9
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mongo-storage
  labels:
    type: local
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: manual
  hostPath:
    path: c:/data/mongodb/database
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-mongo-storage
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: manual
  resources:
    requests:
      storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongodb
  labels:
    app: mongodb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
        containers:
        - name: mongo2
          image: mongo
          ports:
          - containerPort: 27017
            name: mongodb
          env:
          - name: MONGO_INITDB_ROOT_USERNAME
            value: xxx
          - name: MONGO_INITDB_ROOT_PASSWORD
            value: xxxx
          - name: MONGO_INITDB_DATABASE
            value: defaultDatabase    
          volumeMounts:
            - mountPath: "/data/db"
              name: mongo-storage            
        volumes:
            - name: mongo-storage
              persistentVolumeClaim:
                claimName: pv-mongo-storage
            

我想还有一些更好的方法可以在 MongoDb 容器中设置密码......这是迄今为止我看到的唯一可行的方法...... 哦,我还尝试了没有 " 的 mountPath,因为 1. 这对我来说更有意义,并且 2 一些例子是那样做的......运气不好

我得到的错误是 'invalid mode: /data/db' - 这意味着图像无法装载该文件夹,因为它的模式错误...另一方面,是不是因为主机是Windows?

我不知道...我希望它可以安装在 Windows...

从评论中添加它以便社区可以看到它。

Docker Desktop for Windows 提供了从 Docker 容器访问 Windows files/directories 的能力。 windows 目录安装在 /run/desktop/mnt/host/ 目录中的 docker 容器中。

因此,您应该将 Windows (c:/data/mongodb/database) 主机上的数据库目录路径指定为:

/run/desktop/mnt/host/c/data/mongodb/database

这仅特定于 Windows 的 Docker 桌面。