首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“创建容器-容器安装磁盘”标志将磁盘挂载为只读磁盘。

“创建容器-容器安装磁盘”标志将磁盘挂载为只读磁盘。
EN

Stack Overflow用户
提问于 2020-02-19 09:23:04
回答 1查看 242关注 0票数 0

我正在尝试使用Percona图像作为MongoDB在GCE上,但我遇到了一个问题,蒙戈说,挂载路径是只读的。我尽可能多地环顾四周,但我对可能发生的问题感到困惑。

代码语言:javascript
复制
gcloud compute instances create-with-container mongo-svr \
--create-disk name=disk-1,size=1GB \
--container-mount-disk mount-path="/data/mongodb",mode=rw \
--container-image=docker.io/percona/percona-server-mongodb:4.2

我使用了上面的命令,它创建了我的实例。然后我将SSH放入服务器,连接到正在运行的mongo实例以关闭,然后运行:docker exec -it [NAME] mongod --configsvr --replSet rs0 --dbpath=/data/mongodb --bind_ip localhost

这将产生一个错误,指出:

代码语言:javascript
复制
CONTROL  [initandlisten] options: { net: { bindIp: "localhost" }, replication: { replSet: "rs0" }, sharding: { clusterRole: "configsvr" }, storage: { dbPath: "/data/mongodb" } }
STORAGE  [initandlisten] exception in initAndListen: IllegalOperation: Attempted to create a lock file on a read-only directory: /data/mongodb, terminating

在这一点上,我一直在用不同的参数重新创建实例,但是到目前为止还没有什么效果。有人知道我错过了什么吗?

更新为命令输出

代码语言:javascript
复制
gcloud compute instances create-with-container mongo-config-f --zone us-central1-f --create-disk name=disk-1,size=1GB --container-mount-disk mount-path="/data/mongodb" --container-image=docker.io/percona/percona-server-mongodb:4.2 --machine-type=f1-micro
WARNING: Default device-name for disk name [disk-1] will be [disk-1] because it is being mounted to a container with [`--container-mount-disk`]
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_NAME]/zones/us-central1-f/instances/mongo-config-f].
NAME            ZONE           MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
mongo-config-f  us-central1-f  f1-micro                   xx.xx.xx.xx  xx.xx.xx.xx     RUNNING
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-19 16:43:58

我尝试在我的测试项目中复制您的问题,并发现:

  • 持久化磁盘按预期以读写方式创建和挂载;

bash-4.2美元挂载. /dev/sdb on /data/mongodb类型ext4 (rw,ext4正确地运行VM中的容器;

  • 运行docker exec -it [NAME] mongod --configsvr --replSet rs0 --dbpath=/data/mongodb --bind_ip localhost时出错的原因是mongodb容器中的权限:

$4.2 -l /data/ .drwxr xr-x3根4096Feb 19 15:33 mongodb

作为一种变通的命令可以使用根权限执行。

代码语言:javascript
复制
$ docker exec -it --user root klt-mongo-svr-upd-wowt mongod --configsvr --replSet rs0 --db path=/data/mongodb

请找出更多细节和我的步骤如下:

  1. 创建VM:

$ gcloud计算实例-用容器创建mongo-svr \-创建-磁盘名称=磁盘-1,size=1GB \-容器-映像docker.io/percona/percona-server-mongodb:4.2 -容器挂载-磁盘挂载-path=“/data/mongodb”警告:磁盘名称的默认设备名称磁盘-1将是磁盘-1,因为它被挂载到使用https://www.googleapis.com/compute/v1/projects/test-prj/zones/europe-west3-a/instances/mongo-svr.创建--container-mount-disk的容器名称区域( MACHINE_TYPE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS mongo-svr-upd欧洲-West3-a N1-标准-1 10.156.0.9 35.XXX.155.XXX运行

  • SSH到INTERNAL_IP

  • SSH)如果容器正在运行:

$ docker容器ID映像命令创建状态端口名称dfad9c10235d percona/percona mongodb:4.2 "/entrypoint.sh mon…“大约一分钟前上升了大约一分钟-蒙戈-svr-upd-wowt gcr.io/stackdriver-agents/stackdriver-logging-agent:0.2-1.5.33-1-1 bbe02c8e8621 "/entrypoint.sh /usr…“大约一分钟前,堆栈驱动程序-日志代理

此时,一切看起来都很好;

  • 试图以用户身份运行命令:

$ docker exec -it klt-mongo-svr-configsvr- rs0 --dbpath=/data/mongodb -bind localhost

并观察到同样的错误:

2020-02-19T15:37:53.176+0000我在initAndListen: IllegalOperation:尝试在只读目录/data/mongodb上创建一个锁文件,终止

此处键为只读目录:容器内的挂载和权限:

$ docker exec -it klt-mongo-mongo-upd /bin/bash 4.2美元挂载. /dev/sdb on /data/mongodb类型ext4 (rw,相对而言)

正如我们所预期的,磁盘是以读写模式创建并挂载到容器中的。

$4.2$ ls -l /data/共计8 drwxr-x4 mongodb根4096 2月19日15:36 db drwxr-x3根4096 Feb 19 15:33 mongodb bash-4.2$

但是要使用permissions;

  • try,您需要root root作为根用户运行命令:

$ docker exec -it --用户根klt-mongo-svr-upd configsvr--复制rs0 -dbpath=/data/mongodb 2020-02-19T15:45:24.970+0000 i控制主自动禁用为强制启用-sslDisabledProtocols 'none‘2020-02-19T15:45:24.973+0000,我控制并侦听MongoDB启动: pid=119 port=27019 dbpath=/data/mongodb 64位主机=mongo-svr-upd 2020-02-19T15:45:24.974+0000 i控制19T15:45:24.974+0000 i控制initandlisten聆听分配程序: tcmalloc 2020-02-19T15:45:24.974+0000我控制侦听模块:45 2020-02-19T 15:45:24.974+0000我控制initandlisten侦听构建环境:2020-02-19T 15:45:24.975+0000我控制和侦听淀粉: x86_64 2020-02-19T15:45:24.975+0000 I控制initandlisten target_arch: x86_64 2020-02-19T 15:45:24.975+0000控制和收听选项:{ replSet:"rs0“,}切分:{ clusterRole:"configsvr“},存储:{ dbPath:" / data /mongodb”} 2020-02-19T15:45:24.976+0000 I存储,侦听“wiredTiger”存储引擎创建的/data/mongodb中检测到的数据文件,因此将活动存储引擎设置为“wiredTiger”。..。

与根permissions.一起工作的

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60296841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档