在阿里云上装docker

准备在阿里云的ECS上装的docker,我的主机是64位的Ubuntu14.04,内核版本是3.13,如下所示。

$uname -a
Linux iZ258qfn3t4Z 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

安装过程基本是按照这个步骤来的。 它所述的安装过程其实很简单,依次这么几步骤:

  1. 下载docker安装脚本并执行(假设你有curl或者wget)

     $curl -sSL https://get.docker.com/ | sh
    
  2. 启动docker

     $sudo docker daemon
    

    或者

     $sudo service docker start
    
  3. 验证安装

     $sudo docker run hello-world
    

但是安装的过程中遇到这么几个问题,在这里记录一下。

  1. 找不到可用的内网IP

    启动docker daemon的过程中出现了这么一个问题:

     FATA[0000] Error starting daemon: Error initializing network controller: Error creating default "bridge" network: failed to parse pool request for address space "LocalDefault" pool "" subpool "": could not find an available predefined network
    

    大致意思就是找不到一段可用的IP吧,后来查到的问题是因为阿里云上默认把几个内网的网段都路由了。 在/etc/network/interfaces里面是这么写的。

     auto lo
     iface lo inet loopback
     auto eth1
     iface eth1 inet static
     address xxx.xxx.xxx.xxx
     netmask xxx.xxx.xxx.xxx
     up route add -net 0.0.0.0 netmask 0.0.0.0 gw xxx.xxx.xxx.xxx dev eth1
     auto eth0
     iface eth0 inet static
     address xxx.xxx.xxx.xxx
     netmask xxx.xxx.xxx.xxx
     up route add -net 192.168.0.0 netmask 255.255.0.0 gw xxx.xxx.xxx.xxx dev eth0
     up route add -net 172.16.0.0 netmask 255.240.0.0 gw xxx.xxx.xxx.xxx dev eth0
     up route add -net 100.64.0.0 netmask 255.192.0.0 gw xxx.xxx.xxx.xxx dev eth0
     up route add -net 10.0.0.0 netmask 255.0.0.0 gw xxx.xxx.xxx.xxx eth0
    

    里面的xxx.xxx.xxx.xxx已打码,并不影响你继续看本页面。最后几行的up route add开头的配置是说在接口启用的时候添加一条路由规则, 比如up route add -net 172.16.0.0 netmask 255.240.0.0 gw xxx.xxx.xxx.xxx dev eth0就是把172.16.0.0/20这个网段都路由到网关xxx.xxx.xxx.xxx去。 所以我们要把它解放出来,让docker用。

    编辑/etc/network/interfaces文件,用#注释掉up route add -net 172.16.0.0 netmask 255.240.0.0 gw xxx.xxx.xxx.xxx dev eth0, 然后执行route del -net 172.16.0.0 netmask 255.240.0.0把现在启用的路由也删掉。可以用route -n看一下现在的路由表。

  2. 内核不支持swap内存限制

    解决了上一个问题继续启动docker daemon又会遇到这样一个问题:

     WARN[0000] Your kernel does not support swap memory limit.
    

    这也写了,是个warning,所以我估计不解决docker daemon也能跑起来,但是warning就是让人不舒服。这日志也说得很明白了,不支持swap内存限制。 改一下内核参数,Ubuntu默认使用grub,在文件/etc/default/grub里面,把GRUB_CMDLINE_LINUX=""改成GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1", 然后执行sudo update-grub更新一下,然后重启机器。

    重启后可以用cat /proc/cmdline查看刚才的选项是不是启用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值