雲談
簡單介紹一下:Alpine Linux是一個社區開發的面向安全應用的輕量級 Linux 發行版,適合用來做路由器、防火牆、VPNs、VoIP 盒子 以及服務器的操作系統基於 uClibc 和 Busybox。
開始學習構建docker鏡像
課程講的是使用centos構建,自己也一直使用centos,但是有個問題:
就是centos鏡像比較大,安裝的東西比較多。真正的Linux其實用不了那么多,尤其是在使用Docker的時候,打包的次數越多,鏡像文件堆積的越多。
所以選擇使用 alpine(阿爾卑斯,和那個糖名字一樣)。官方網站:
https://alpinelinux.org/
有iOS的版本大約81mb,但是在docker上面使用的版本是更精簡的才 4mb。這個是沒有bash的,需要安裝一個bash。
安裝了之后才 5mb。剩下的就是安裝各種軟件了。基礎的版本就是這樣小,而對於centos來說一個鏡像就要600多mb。更別說裝東西之后了。
構建一個alpine 鏡像
目標做兩個鏡像:一個數據庫的,一個Python的。
然后把兩個連接起來一一一既能存儲也能查詢,那樣就可以了。充分利用docker的優勢,首先要構建一個基礎的python環境,然后再在這個環境的基礎上開發程序。
否則的話每次從0構建太慢了。主要是因為網絡慢。
特別要注意下:
其中 bash 是方便進入鏡像里面查看的。這個是設置一個國內清華大學的站點。因為直接拉官網的太慢了,有的時候就卡死了,當然也可以直接建立一個內網的私服,那樣就更快了。
參考這個哥們的可以做個私服:
https://my.oschina.net/funwun/blog/710877
然后打包一個基礎的python 包:
如果沒有報錯就可以了,python環境依賴的東西比較多,而且python在安裝的時候還需要gcc的編譯工具。
使用 docker images 查看編譯后的鏡像:
發現也已經幾百兆了,似乎明白了為啥要開發一個golang了。golang的文件也就 幾兆,對於鏡像來說真的是太好了。
使用docker images 查看鏡像:
構建http項目
再利用alpine-python鏡像做一個http服務
vi main.py
編寫Dockerfile:
編譯:
運行http
很簡單,直接運行就可以了。但是有個問題,訪問端口沒結果。
報錯是這樣的:
但剛開始沒有找到解決辦法。
后來發現已經解決,是python程序要主動綁定。
這樣寫就可以了。
總結
總的來說docker還是非常的好用的,但是遇到一個問題。使用python 和PHP的項目都需要安裝非常大的包。造成了本來就很小的鏡像,alpine 5mb的變成了幾百mb。大概明白了golang為適合雲服務了。因為golang最后編譯的文件才幾mb。
再配合上alpine就太完美了。兩個加起來 幾十mb搞定。每次升級備份都非常的方便。而Java加上jdk再加上jar包依賴就變得臃腫起來了。
新智雲官網:http://www.enncloud.cn