目录

Centos上Docker无法启动

最近在公司的开发机上搞docker,安装是可以成功,但是无法启动,在网上找各种资料没有一个可以完全解决问题的

具体的报错如下

1
iptables v1.4.21: can't initialize iptables table `nat': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded.

我升级了内核也无济于事,最后再看解决方法的时候看到了编译安装内核的时候点选几个选项
根据目前的现象来看,要不就是内核中iptables的版本不一致,要不就是内核安装的时候缺少对应的iptables模块解决问题的步骤

1.确定是否内核包含对应的模块

执行如下命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#先找到对应的模块路径
[root@VM ~]#  modinfo iptable_nat
filename:       /lib/modules/4.4.153/kernel/net/ipv4/netfilter/iptable_nat.ko
license:        GPL
srcversion:     0ABBEAA64C52C3302A03BE4
depends:
retpoline:      Y
intree:         Y
vermagic:       4.4.153 SMP mod_unload modversions
//引入模块
insmod /lib/modules/4.4.153/kernel/net/ipv4/netfilter/iptable_nat.ko

如果还是不可以那恭喜你中奖了,需要编译安装内核了

2.编译安装内核

1
2
3
4
5
6
#1.选择你要安装的内核,这儿我选择了最新的
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.4.153.tar.gz
#2.解压文件
tar -xvf linux-4.4.153.tar.gz
#3.切换到文件目录下,选择配置
make menuconfig

基本配置为下图

在选择图中的以下下选项

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[*] Networking support  --->
      Networking options  --->
        [*] Network packet filtering framework (Netfilter)  --->
            Core Netfilter Configuration  --->
              -*- Netfilter Xtables support (required for ip_tables)
            IP: Netfilter Configuration
              <*> IPv4 connection tracking support (required for NAT)
              <*> IP tables support (required for filtering/masq/NAT)
              <*>   Packet filtering
              <*>     REJECT target support
              <*>   Packet mangling

随后保存并退出

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#4.编译安装模块
make clean
make modules
make modules_install 
#5.编译安装内核
make bzImage 
make install
#6.修改引导
vim /etc/default/grub
#7.生效配置&重启
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
#在这个时候如果还是不能启动docker那么说明你和我遇到的情况是一样的需要执行第8步及后续
#8.查看&加载iptable_nat模块的信息
modprobe iptable_nat
insmod /lib/modules/4.4.153/kernel/net/ipv4/netfilter/iptable_nat.ko

以上就是我解决开发机docker无法启动的方法仅供参考,如有疑问请联系resowolf@gmail.com