docker报错chown: cannot dereference ‘/proc/1/fd/1‘: Permission denied

问题

前几天在另一台服务器上通过docker部署wekan,执行docker-compose up -d没有报错,但是curl却无法访问。
接着我尝试docker-compose up在前台运行容器,以便查看容器输出的信息。果然有一个报错wekan-db1 | chown: cannot dereference '/proc/1/fd/1': Permission denied

解决

搜索issue

这个报错来自wekan-db1这个容器,db使用的是MongoDB,于是我在https://github.com/docker-library/mongo/issues中仔细搜索了下,果然有这个issue,解决方法是添加--user mongodb参数。
于是我按照issue的解决方法,先用docker run的方式另外创建一个mongo容器,创建并运行命令为docker run --user mongodb --name mongo-test mongo:latest,果然没有那个报错。而使用不带--user mongodb参数的docker run --name mongo-test mongo:latest是会有那个报错的。

于是我更加确定了,就是因为缺少--user mongodb导致的。
于是我尝试在docker-compose.yml文件中添加该配置,由于自己还不是很熟docker compose,经过各种尝试配置的--user mongodb都是不对的。

同时我也在docker的官方文档中以及Google中都搜索了,没有找到解决方法。或许是我眼花,其实官网有答案,只是我没看到。

提issue

虽然这个属于docker compose的知识点,本不该在mongo中提issue的,没办法,由于时间紧迫,我就提了个issuechown: cannot dereference ‘/proc/1/fd/1’: Permission denied #465

过了2天终于有人回答了:
在这里插入图片描述
我按照他说的查阅了docker的文档,并在docker-compose.yml文件中weandb下添加了user: mongodb。然后再次up,如果没有报错了。

但是执行curl还是不能访问。
此时我要奔溃了。
于是我仔细再看了一下他的回答,其中说到:

My guess is the error chown: cannot dereference ‘/proc/1/fd/1’: Permission denied is from the host’s SELinux or AppArmor, I’m not able to reproduce

说的就是是不是防火墙(SELinux or AppArmor)导致的权限不足。

测试Tomcat

我想运行Tomcat容器是不是也有问题呢?
于是,运行如下命令进行测试:

docker run --name tomcat -d -p 8082:8080 tomcat

果然curl访问失败,没有任何返回。
这个测试让我加大了对防火墙的怀疑。

关闭SELinux和AppArmor

  1. 查看是否安装SELinux
    在这里插入图片描述

  2. 查看SELinux是否开启
    在这里插入图片描述
    SELinux为关闭状态。

  3. 查看是否安装AppArmor
    在这里插入图片描述
    没有安装。

关闭firewalld和iptables

SELinux是关闭的、AppArmor没有安装。
后来从firewalld 与 iptables
查阅到:

从Cent7以后,iptables服务的启动脚本已被忽略。请使用firewalld来取代iptables服务。

那么接着尝试关闭:

  1. 查看是否安装iptables 在这里插入图片描述
  2. 查看iptables是否开启
    在这里插入图片描述
    是关闭的。
  3. 查看是否安装firewalld
    在这里插入图片描述
  4. 查看firewalld是否开启
    在这里插入图片描述
  5. 关闭firewalld
    在这里插入图片描述

做完上面这些,接着尝试重新运行Tomcat,结果curl还是失败,重新运行docker服务(sudo systemctl restart docker),还是不行。

快泪奔了!😭😭😭

那重启服务器试试,重启后,果然没问题了!
看来就是防火墙的问题啊。
但是重启后firewalld是开启的,因为服务开机自动运行的。这就很奇怪了,似乎与防火墙有关有很矛盾?

问题虽然解决了,但是留下了这个疑问。
先记录着,以后有空再好好研究下!

参考

支持🤟


  • 🎸 [关注❤️我吧],我会持续更新的。
  • 🎸 [点个👍赞吧],码字不易麻烦了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值