Docker自己有不少優秀的鏡像可供咱們下載使用,但有時候依然知足不了咱們的需求,好比博主在嘗試了N屢次經過Jdeathe的鏡像進行PHP持續集成環境的整合一直是失敗的,這時候咱們就應該考慮去打造一款屬於咱們自已的鏡像,使用最純淨的os底層,用原生的環境來實現咱們的需求。本篇涉及到的架構以下圖所示:php
一、有朋友可能會說,既然我有不一樣的需求,那麼我直接pull個純淨的鏡像,而後起兩個容器來分別作對應的功能不就能夠了,何須要自已折騰一個鏡像呢?首先,爲了學習目的,作一個自已的鏡像並熟悉製做鏡像的過程是有必要的,其次,在之後擴展時,咱們能夠基於該鏡像來進行擴展,能夠保證應用基礎環境的一致,固然方法是多種多樣,今天我就先介紹這種較爲折騰的作法,其餘作法會在接下來的文章中體現。Ok,進入正題,咱們先看看要達到的效果怎麼樣的:html
二、既然是要定製一個鏡像,天然不能用docker pull這種命令來獲取一個現成的docker p_w_picpath,首先咱們得選個比較快的OS鏡像節點(傳送門:http://blog.chinaunix.net/uid-25057421-id-4428048.html),不過我仍是比較喜歡openvz的OS鏡像(OpenVZ也提供了大量現成的鏡像供下載),ok,這裏如下載centos6爲例子:mysql
wget http://download.openvz.org/template/precreated/centos-7-x86_64.tar.gz sql
三、接下來,咱們須要將下載的os鏡像tar鏡像導入,咱們須要用到這個命令docker import:docker
sudo cat centos-6-x86_64.tar.gz |docker import - vmcloud/centos:7 apache
四、接着咱們根據前面幾章所學建立Container0一、Container02,因爲咱們在作鏡像時並無預先集成/bin/bash因此若是直接用docker run會提示缺乏命令,這時咱們須要使用如下命令建立:centos
sudo docker run -itd --name=con01 vmcloud/centos:6 /bin/bashbash
sudo docker run -itd --name=con02 vmcloud/centos:6 /bin/bash架構
五、接着咱們進去c01去安裝ssh與mysql:ssh
docker exec -ti con01 /bin/bash
六、接着咱們進去c02去安裝apache與php:
docker exec -ti con02 /bin/bash
七、如今咱們把con0一、con02經過commit命令提交爲固定鏡像,名稱爲vmcloud_mysql_ssh:1於vmcloud_apache_php:1:
八、這樣就經過源os鏡像的方法去定製了自已的鏡像,如今咱們來測試下,咱們用vmcloud_mysql_ssh建立一個Container並映射2二、3306,爲了後期監控及主機性能考慮,這裏會用到兩個新的參數,一個是-hostname,另一個是-m,具體什麼做用,後面的博文會介紹到:
九、將802二、8060在Azure上作映射,而後看看咱們是否可以經過8022 ssh到咱們所建立的容器裏(請注意,開放ssh實際上並不推薦這麼作,不過爲了往後與system center整合,這裏須要到,僅供評估):
PS:這裏發現一個問題,在Container裏設置了chkconfig後的服務並不會隨着Container的啓動而啓動,這裏是個小坑,將在之後學習docker的步伐中去慢慢摸索如何解決。