运行 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 桌面。
我正在尝试 运行 这个,在创建文件夹 \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 桌面。