1,開始學習構建docker鏡像python
http://study.163.com/course/courseMain.htm?courseId=1273002 git
課程講的是使用centos構建。本身也一直使用centos,可是有個問題。 github
就是centos鏡像比較大,安裝的東西比較多。真正的Linux其實用不了那麼多,尤爲是在使用Docker的時候,打包的次數越多,鏡像文件堆積的越多呢。 golang
因此選擇使用 alpine(阿爾卑斯,和那個糖名字同樣)。新智雲官方網站:www.enncloud.cn docker
有iOS的版本,大約81mb,可是在docker上面使用的版本是更精簡的才 4mb。可是這個是沒有bash的,須要安裝一個bash。 數據庫
安裝了以後才 5mb。剩下的就是安裝各類軟件了。基礎的版本就是這樣小,而對於centos來講,一個鏡像就要600多mb。更別說裝東西以後了。centos
2,構建一個alpine 鏡像bash
目標,作2個鏡像,一個數據庫的,一個Python的。 網絡
而後鏈接起來。能存儲,能查詢,就能夠了。 工具
充分利用docker的優點,首先要構建一個基礎的python環境。
而後再在這個環境的基礎上開發程序。
不然的話每次從0構建太慢了。主要是由於網絡慢。
mkdir alpine-python
vi alpine-python/Dockerfile
特別要注意下:
其中 bash 是方便進入鏡像裏面查看的。
這個是設置一個國內清華大學的站點。
由於直接拉官網的太慢了。有的時候就卡死了。
固然也能夠直接創建一個內網的私服。那樣就更快了。
參考這個哥們的能夠作個私服:
https://my.oschina.net/funwun/blog/710877
而後打包一個基礎的python 包:
若是沒有報錯就能夠了。python環境依賴的東西比較多呢。
並且python在安裝的時候還須要gcc的編譯工具。
使用 docker images 查看編譯後的鏡像:
發現也已經 幾百兆了。彷佛明白了爲啥要開發一個golang了。
golang的文件也就 幾兆吧。對於鏡像來講真的是太好了。
使用docker images 查看鏡像:
3,構建http項目
再利用alpine-python鏡像作一個http服務
vi main.py
編寫Dockerfile
編譯:
4,運行http
直接運行就能夠了。可是有個問題,訪問端口沒結果。
報錯是這樣的:
https://github.com/docker/docker/issues/2174
可是尚未找到解決辦法。
已經解決,是python程序須要主動綁定。
這樣寫就能夠了。
4,總結
總的來講docker仍是很是的好用的,可是遇到一個問題。
使用python 和PHP的項目都須要安裝很是大的包。
形成了原本就很小的鏡像,alpine 5mb的變成了幾百mb。
大概明白了golang爲適合雲服務了。由於golang,最後編譯的文件才幾mb。
再配合上alpine就太完美了。兩個加起來 幾十mb搞定。
每次升級備份都很是的方便。而Java加上jdk,在加上jar包依賴。
就變得臃腫起來了。繼續研究。