最近在公司的开发机上搞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