【云原生】解决在Windows上在docker内启动docker报Operation not permitted
创始人
2024-05-31 22:19:56
0

问题场景:

环境:

Windows 10

Docker Desktop 4.16

项目需要构建一个all-in-one容器,在容器内将项目所有其他容器启动。
例如postgresqlredis 等组件

这些组件全部配置在docker-compose.yml

docker-compose.yml 位于all-in-one容器内

现在我们用一个命令先启动 all-in-one 容器,该容器挂载了docker.sock 用于操作docker engine

docker run -p 5888:5888 -p 80:80 -p 443:443 -it -v c:/project/etc/bp:/etc/bp -v c:/project/tmp/:/opt/tmp -v c:/project/home/project_storage:/home/project_storage  -v  //var/run/docker.sock:/var/run/docker.sock --name=abc debian11:v1 /bin/bash

然后我们进入到该容器内,用 docker-compose 命令启动所有其他容器

docker-compose -f docker-compose.yml up -d

启动时报错
例如启动redis 的报错

PS C:\Users\abc> docker logs -f 116
chown: .: Operation not permitted
chown: .: Operation not permitted
chown: .: Operation not permitted
chown: .: Operation not permitted
chown: .: Operation not permitted
chown: .: Operation not permitted

docker-compose.yml 部分配置如下

version: '2.4'
services:postgresql:container_name: postgresqlimage: postgresql:latestrestart: alwayshealthcheck:test: pg_isreadyinterval: 15stimeout: 2sretries: 20start_period: 10senvironment:POSTGRES_PASSWORD: *****POSTGRES_USER: postgresPGDATA: /datavolumes:- /c/project/home/project_storage/postgresql/data:/data

postgresql 也有类似的报错
都是没有操作权限

解决方案:

PS C:\Users\abc> docker run --privileged=true -it -v /run/desktop/mnt/host/c/project/etc/bp:/etc/bp -v /run/desktop/mnt/host/c/project/tmp/:/opt/tmp -v /run/desktop/mnt/host/c/project/home/project_storage:/home/project_storage  -v  //var/run/docker.sock:/var/run/docker.sock --name=abc debian11:v1 /bin/bash

这样挂载后,docker-compose.yml 文件内的volume配置也要修改为

version: '2.4'
services:postgresql:container_name: postgresqlimage: postgresql:latestrestart: alwayshealthcheck:test: pg_isreadyinterval: 15stimeout: 2sretries: 20start_period: 10senvironment:POSTGRES_PASSWORD: *****POSTGRES_USER: postgresPGDATA: /datavolumes:- /run/desktop/mnt/host/c/project/home/project_storage/postgresql/data:/data

这样postgresql,redis 等容器就能起来了,不会再报权限问题

参考:

https://stackoverflow.com/questions/71018631/kubernetes-on-docker-for-windows-persistent-volume-with-hostpath-gives-operatio

相关内容

热门资讯

过几个月老婆生孩子!帮忙给个名... 过几个月老婆生孩子!帮忙给个名字参考一下! 男孩女孩的名字都写出来!还不知道是男是女!姓吴吴浩学:博...
沪指7月开门红 银行与创新药板... 7月首个交易日,A股主要股指走势分化,银行板块强势发力,带动沪指收获7月开门红。截至收盘,上证指数报...
退休铁路警察用镜头“看见”成昆... 七个月、六十九座车站、十万张照片成昆铁路乃托铁马大桥。行走在成昆线上的罗兆进。沙马拉达隧道的卫士。 ...
“寻医成渝”大型主题报道重磅开... 探寻仁心医者足迹,解码行业典型案例  华西都市报讯(记者 周家夷)在健康中国战略持续推进下,成渝地区...
武当山和华山哪个更值得去 武当山和华山哪个更值得去华山一直都想去,不过一直没时间。武当山因为本人就是武汉人,所以端午去过,也还...
无锡华光环保能源集团:已回购近... 无锡华光环保能源集团股份有限公司于2025年7月2日发布股份回购进展公告,披露了自2025年4月15...
是便民驿站也是暖心港湾 转自:成都日报锦观记者探访成都燃气社区服务中心是便民驿站也是暖心港湾 本报讯 (成都日报锦观新...
会通新材料股份有限公司关于可转... 证券代码:688219 证券简称:会通股份 公告编号:2025-037转债代码:118028 转债...
广东冠豪高新技术股份有限公司第... 证券代码:600433 证券简称:冠豪高新 公告编号:2025-026广东冠豪高新技术股份有限公司...
跨省出门也有“医”靠   三湘都市报7月1日讯  湖南湖北一家亲,虽是不同的省份,却已经实现“异地就医区域互认”,为两省的...