天天看點

Docker容器常見問題

Docker容器常見問題

@Date 2018.09.20

一. Docker容器内部無法通路主控端網絡(No Route to host)

解決辦法
  • 關閉防火牆(區域網路内推薦)
# centos 7
systemctl stop firewalld
           
  • 在防火牆上開放指定端口
# 添加端口
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --reload
           

二. Docker啟動報錯 : iptables failed

錯誤提示
Error response from daemon: driver failed programming external connectivity on endpoint gloomy_kirch : iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 32810 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.
           
原因分析

在Docker Daemon服務啟動之後, 修改了防火牆配置(修改/關閉等), 此時啟動Docker容器會造成防火牆網絡配置有問題

  • 重新開機
# 先重新開機防火牆
systemctl restart firewalld
# 再重新開機Docker 服務
systemctl restart docker
           

三. Docker挂載的目錄, 在容器内無讀寫權限(Permission denied)

環境&現象

CentOS 7.4 環境, 啟動Docker時volume容器和主控端的挂載目錄, 但是在容器内部無權限對此目錄進行操作

# 錯誤現象
ls: cannot open directory '.': Permission denied
           
  • 關閉CentOS7中安全子產品selinux
# 臨時關閉selinux
setenforce 0

# 永久關閉selinux : SELINUX=disabled , 重新開機機器生效
vi /etc/selinux/config
           
  • 運作容器時, 給容器增加特權
docker run -i -t -v /soft:/soft --privileged=true 637fe9ea94f0 /bin/bash