Docker无法启动Postgresql容器
2024-01-07 18:05:51
问题描述
拉取了一个Postgresql14.2的镜像,在docker run
创建并运行容器之后使用docker ps
发现容器没有跑起来,再次使用docker start
也没跑起来。
docker run -d --name mypg -v psql-data:/var/lib/postgresql/data -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=admin -p 5432:5432 postgres:14.2
后面我尝试了以下的解决方案:
- 重启docker,删除容器之后再次
docker run
→无法运行 - 修改指令,
docker run -d
→docker run -dit
(后台运行→前台交互运行)→无法运行
解决问题
这时候只能看容器的日志了docker logs mypg
(mypg是容器名)
[root@VM-8-9-centos lib]# docker logs mypg
ls: cannot access '/docker-entrypoint-initdb.d/': Operation not permitted
这样我就好百度解决问题了
原因: 权限问题。
解决:
- docker rm删除容器
- 重新run,并加上
--privileged=true
(让容器以privileged模式运行,即拥有几乎与主机(root)相同的权限)
注意: 使用--privileged=true
选项可以让容器执行一些通常不能执行的操作,例如加载内核模块、直接操作硬件设备等。然而,这也带来了严重的安全隐患。由于privileged容器具有几乎与主机相同的权限,如果容器被恶意代码控制,攻击者可以轻易地突破容器的边界,对主机进行任意操作。
建议使用其他更细粒度的权限控制手段,例如通过 --cap-add
或 --device
参数来分别添加必要的capabilities或设备访问权限。这样可以更好地控制容器的权限,并减少潜在的安全风险,如下。
docker run --cap-add SYS_ADMIN -d mypg [省略]
至于该配置什么权限,可以参考这篇博客:https://developer.aliyun.com/article/722230
文章来源:https://blog.csdn.net/m0_54355172/article/details/135379851
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!