centos7上docker问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/buyaore_wo/article/details/78062931
1.Centos7安全Selinux禁止了一些安全权限,在centos上挂载数据卷,在容器内部访问数据卷的时候报permission denied出错

[root@192 data]# docker run -p 6379:6379 -v /usr/local/data:/data -it redis:3.2 redis-server --appendonly yes

在centos上挂载数据卷,在容器内部访问数据卷的时候报permission denied出错,
chown: changing ownership of '.': Permission denied

解决方法有这么三个:
  1. 在docker run中加入 --privileged=true  给容器加上特定权限
  2. 关闭selinux / 关闭防火墙
  3. 在selinux添加规则,修改挂载目录de

2. . 有时候,在启动带有端口映射的容器时候,会出现如下提示:
1 iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 52080 -j DNAT --to-destination 192.168.20.22:52080 ! -i docker0: iptables: No chain/target/match by that name
 
通过分析异常信息,发现是因为在进行原地址到目标地址转换的时候没有在docker主机的iptables规则中找到nat表规则,只有filter表规则。
 
在filter表上面增加nat表配置规则信息,需要说明的是docker容器的网段是172.17.0.0/16,另外需要注意filter表中也要有docker链的相关配置。
sudo vi /etc/sysconfig/iptables
-----修改前-------------------------------------------------------------------------------------------
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
---修改后----注意红色加粗部分-------------------------------------------------------------------------
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:DOCKER - [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#
*nat
:DOCKER - [0:0]
COMMIT

猜你喜欢

转载自blog.csdn.net/buyaore_wo/article/details/78062931