解决docker: Error response from daemon故障

有个项目是公司那边做的,我们这边需要部署一下。具体是用docker swarm部署在虚拟机的centos7上的,部署完没有发现啥问题,然后打了个镜像。但是过了几天发现一些问题:

1. 恢复镜像后,启动系统显示登录已过期

原因: 每次快照恢复后虚拟机里的时间是打快照时的时间,没有更新。
解决方法: 公司那边提供的方法时开启vmware tools的自动更新时间功能。
在这里插入图片描述
但是虚拟机没有安装vmware tools,搞了一会子没装好,所以进行了手动更新:

# 1、清理本地yum缓存
yum clean all
# 2、查看软件包列表
yum list
# 3、安装ntp包
yum install ntp
# 4、更新时间
ntpdate cn.pool.ntp.org
2. 远程连接虚拟机一段时间后就会自动断开,然后无法连接

这个问题猜测是因为我默认配置虚拟机使用DHCP,网络出现了变化??总而言之,我将其配置为静态IP后解决。

  1. centos7的网卡配置文件在/etc/sysconfig/network-scripts/目录下
    查看网卡名称:
    在这里插入图片描述

  2. 编辑对应的配置文件:
    在这里插入图片描述

# 我这里是ens33
vi ifcfg-ens33
  1. 添加静态IP配置:
    注释掉BOOTPROTO=dhcp
    添加以下内容:
BOOTPROTO=static
IPADDR=192.168.31.128
NETMASK=255.255.255.0
GATEWAY=192.168.31.2
DNS1=8.8.8.8

这里的网关可以在虚拟机的虚拟网络编辑器中看到,这里不详细说了。注意和主机的网关是不一样的。

详细配置说明:
在这里插入图片描述
4. 修改/etc/sysconfig/network

# Created by anaconda
NETWORKING=yes
GATEWAY=192.168.31.2
  1. 重启网络服务
service network restart
  1. 测试网络
ping www.baidu.com
3. 使用静态IP后无法访问虚拟机的web服务

这个问题折腾了我好久,主要表现如下:

  • 8080端口正常使用:
    在这里插入图片描述

  • 防火墙也开放了这个端口:
    在这里插入图片描述

  • 虚拟机里可以ping的通外网,电脑也ping的通虚拟机

  • 在虚拟机内部可以通过curl +ip:8080访问到8080端口

试了很多方法没有效果,然后突然想起来我再启动一个简单的容器试试能不能访问到,就pull了一个tomcat启动了个容器,结果容器启动不起来报类似这样的错误:

ocker: Error response from daemon: driver failed programming external connectivity on endpoint loving_bassi (37b4c399f676cf46e35fd26b2298ad81aac87739d8aee416f449e36c6cb22503): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 90 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.

对于这个错误,我使用以下方法解决了:

pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
service docker restart

重启docker之后之前的容器全部挂掉了,我把所有容器启动,服务正常访问!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值