https://www.docker.io/
此次希望将要釋出的app和執行環境進行打包, app使用python django開發。
這次我打算打包的步驟為:
自己制作docker的base image
配置app執行環境
将制作好的容器導出成檔案,用于其他機器的導入
首先我們先提取一個最小的rootfs, 我現在使用的系統是ubuntu12.04, 我想制作一個12.04的也就是<code>precise</code>的rootfs:
制作過程比較長,制作完成後我們來把它導入到docker中成為一個image:
完成後我們就制作好了一個docker的base image, 我們可以同做下面這個指令來檢視:
首先我要把app代碼拷進容器中,這個是可以通過dockerfile 中的ADD來做的,不過我還沒有仔細看dockerfile,就先手動通過qiniu上傳在下載下傳到運作中的容器中的.
首先我們要用docker使用我們前面制作好的image跑起一個shell
然後我們就可以在這個啟動中的bash中來執行我們的常用操作了,我把上傳的代碼wget下來到<code>/docker_app</code>, 對我把它放在了啟動的容器的根目錄下的<code>docker_app</code>,現在我要安裝我app的依賴。
我先手動wget下來python的setuptools和pip,手動安裝好.因為依賴中有MySQL-python,如果要用pip來安裝的話要編譯,編譯的話需要安裝mysql的一些lib,會使image變大,是以直接用apt-get安裝了二進制的,并在requirments.txt中删掉了MySQL-python. 因為依賴中還有一個Pillow需要編譯,是以忍痛裝上的gcc和python-dev.
然後在docker_app目錄下
修改app配置檔案中的資料庫的位址,我們要檢視我們本機docker0虛拟網卡的ip, 我機器的顯示是:
是以我就把資料庫ip改成 172.17.42.1, ok,環境配置好的,我們保持這個shell session,然後打開另一個shell session執行以下指令檢視現在運作的這個容器的id:
然後我們将這個容器commit 成 docker_app:
我們再次執行 <code>sudo docker images</code>, 就會發現我們生成的 docker_app 的image
下面我們 exit 剛才我們配置環境的那個 shell, 來測試一下我們配置的環境的image.
這樣我們就把本地8000端口和任務容器的8000端口做了映射,接下來我們就可以在本地浏覽器上通路我們 <code>http://127.0.0.1:8000</code> 來通路我們的應用了, 我們還可以檢視容器的輸出日志, <code>容器id</code> 為我們<code>sudo docker ps</code> 出來的 <code>CONTAINER ID</code>:
docker 本身是有push 來上傳的 index.docker.io 的,使用是用pull來拉取,但是由于在天朝,網絡不給力。是以就導出成檔案吧,docker官方也有給出自建image server的方案,貌似項目還不太成熟,以後再研究.
現在我們 docker ps 出剛才運作的那個容器的 id, 将它導出
完成後我們剛才制作的容器就導出成了 docker_app.tar 檔案, 以後在其他機器部署的時候執行導入
管道後面的 docker_app 為導入後image命名,自己指定