在阿里雲上裝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查看剛纔的選項是不是啓用了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章