Docker 簡介

Docker在現有云計算虛擬化中是非?;鸬囊粋€項目,那么他和虛擬化有什么不同呢

Docker 簡介

從上圖來看,好像和我們之前說到的虛擬化并沒有什么不同,但這里需要說明的是在各guest主機上,是沒有操作系統的,他們共用Host主機上的內核空間,只對用戶空間進行了隔離。

因此在這種環境下我們不把他稱為虛擬化而稱作容器。

此種方式的實現主要基于了linux內核自帶的兩項技術,分別是namespace和cgroup,下面解釋下它們分別做了什么

?

Namespace

PID NameSpace:PID隔離。
Network NameSpace:網絡設備、網絡棧、端口等網絡資源隔離。
User NameSpace:用戶和用戶組資源隔離。
IPC NameSpace:信號量、消息隊列和共享內存的隔離。
UTS NameSpace:主機名和域名的隔離。
Mount NameSpace:掛載點(文件系統)隔離。

?

Cgroup

Resource limitation:資源限制。
Prioritization:優先級控制。
Accounting:審計和統計,主要為計費。
Control:掛起進程,恢復進程。
依靠上面所提到的技術,我們應該明白已經完全可以隔離用戶空間了,甚至還可以進行對各空間的資源限定,當然要想正常使用,還需要依賴下面2樣技術,也是內核所帶的功能。

UnionFS:把不同的物理位置的目錄合并到同一個目錄中。(打個比方說就是把一個磁盤掛載至一個目錄中,我們知道如果正常情況下掛載點里面所擁有的文件會被隱藏,基于此項技術,可以同時看到,也可以修改,但此種修改并不在原文件上生效,而是相當于在磁盤中新建的數據)

Device mapper:用于在內核中支持邏輯卷管理的通用設備映射機制

Docker就是依靠以上技術進行的一步封裝,以便人們可以更方便的使用,就像很久前,我們提到的linux各發行版一樣,如果你想學習linux,卻只提供給你一個內核,相信沒有多少人安裝成功。

?

Docker于2013年發布,go語言研發,并遵從apache開原協議,C/S架構。

Docker的重要組件:

registry:主要提供各鏡像文件(repository),以及鏡像的元數據信息,還包括給各鏡像創建索引分類(index)。

container:運行于host主機上的實例。

volume:在容器運行的應用程序,如果關閉,會刪除容器中保存的數據,因此volume主要給容器和物理磁盤作一個映射關系,這樣每個容器關閉或刪除時上面的數據都會存在。

link:各實例的關聯關系,類似于定義依賴關系。

docker通常用于運行單個任務,單個任務結束,即會退出實例。

下面就來簡單演示下基于docker容器實現的lamp部署wordpress

配置好extras yum源

[root@localhost ~]# yum -y install docker

 

[root@localhost ~]#?docker pull centos

直接安裝并下載centos的image鏡像,

Docker 簡介

這里我已經有了兩個鏡像,一個是官網下的centos鏡像,然后自己配置了一下yum源,新生成了一個鏡像否則下載太慢。

下面就用兩種方式生成image來完成對web和mariadb的部署。

先來web吧

[root@localhost ~]# docker run -it –rm centos:7 /bin/bash

-i:交互式運行

-t:打開一個偽終端

–rm:退出后直接刪除實例

centos:7 ?指明運行的鏡像

/bin/bash:運行的程序

[root@feba71b34795 /]# yum -y install httpd php php-mysql?

直接安裝PHP HTTPD和php鏈接mysql所需要的包

Docker 簡介

另外打開一個終端。接著使用docker ps 查看啟動的容器ID,并使用docker commit 指明容器ID 并給此容器定義一個名字就生成新鏡像了,使用docker images可以查看到。我們之前起的實例就可以關閉了~~~。

Docker 簡介

重新起一個實例

 

-v:將host主機的/web目錄掛載至/var/www/html ?因為之前什么都沒改,apache默認的根目錄就在此,我們直接將此目錄掛載出來。

-d:后臺運行

-p:將本機的80端口映射為虛擬機的80端口,其實就是docker自己添加一條dnat規則

/sbin/http: 運行此命令 -DFOREGROUND 使其運行至前臺,我們前面提到過,docker每個實例的生命周期為一個任務結束,所以要讓他一直占據前臺。

Docker 簡介

接著在映射出的目錄里面創建一個測試頁,接著就可以嘗試訪問看能否訪問到。

Docker 簡介

 

可以看到我們直接訪問虛擬機的80端口就能訪問到我們提供的測試頁了。 我們先不管這臺容器了。

接著我們用dockerfile創建一個mariadb的實例出來。

[root@localhost mariadb]# docker build -f ./mariadb.df -t centos7:mariadb ./

-f :指明構建所用到的文件

-t :指明在images里面看到的標簽

./:指明工作的目錄

這里我是新建一個目錄 然后在里面創建的文件

Docker 簡介

 

 

注意 這里是兩個文件 一個是構建的文件,一個是腳本。

在這里折騰許久,一直想直接一個文件寫完,添加授權嘗試了很多種方法都不行,會直接報沒有mysql命令 ,要不就是語法錯誤,后來看了mariadb官方提供的鏡像,發現他也是通過腳本來執行的,于是自己寫了個簡單的腳本。這里還有莫名其妙的地方,那就是后臺啟動了mariadb過后還是需要sleep兩秒才能執行成功。最后呢 ,授權完了,任務也就完了,實例還會自己關,就偷了個雞,tail -f 讓他一直在前臺刷新mariadb自己的日志。

接著啟動實例吧

Docker 簡介

啟動實例并且查看運行中的實例 確定mariadb和http都在運行狀態, 并且也已經看到了mariadb已經把初始化的目錄正確的寫入到host主機了。

接著去解壓wordpress到host主機上的/web目錄應該就完成了~

這里需要注意的是,我們不知道mariadb的地址,可以使用下面的命令查看

[root@localhost mariadb]# docker ?inspect -f {{.NetworkSettings.IPAddress}} 3b7a7e94bb8e
172.17.0.3

后面的3b7a。。是容器ID

也可以不使用-f 顯示容器的所有參數,如果只想看某一項就可以使用上面的格式查看

Docker 簡介

接著在wordpress的配置頁面里面填上這些就可以了。

Docker 簡介

這里可以看到已經可以創建

Docker 簡介

 

 

 

原創文章,作者:N24_Ghost,如若轉載,請注明出處:http://www.www58058.com/71384

(0)
N24_GhostN24_Ghost
上一篇 2017-03-19 17:32
下一篇 2017-03-19 19:42

相關推薦

  • 初探SElinux

    SELinux介紹: SELinux: Secure Enhanced Linux(安全強化的linux),是美國國家安全局(NSA=The National Security Agency)和 SCC(Secure Computing Corporation)開發的Linux的一個強制訪問控制的安全模塊。2000年以GNU GPL發布,Linux內核2.6…

    Linux干貨 2016-10-09
  • 關于文件 atime mtime gtime 專題–2016-07-27

    Linux文件組成部分:元數據(metadata)和數據(date) 元數據的查看方式:使用stat命令; 數據的查看方式:文本格式使用 cat nano查看及修改即可; stat命令: 功能說明:顯示文件或文件系統的狀態 語法: stat  [OPTION] …  FILE… 參數:   舉例: [ro…

    Linux干貨 2016-08-04
  • linux sort 命令詳解

    linux sort 命令詳解 sort是在Linux里非常常用的一個命令,管排序的,集中精力,五分鐘搞定sort,現在開始! 1 sort的工作原理 sort將文件的每一行作為一個單位,相互比較,比較原則是從首字符向后,依次按ASCII碼值進行比較,最后將他們按升序輸出。 [rocrocket@rocrocket programming]$&nb…

    Linux干貨 2016-08-15
  • 第十四周作業

    系統的INPUT和OUTPUT默認策略為DROP; 1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機; ]# iptables -P INPUT DROP #INPUT默認策略為DROP ]# iptables -P OUTPUT DROP…

    Linux干貨 2017-04-12
  • N21—-第一周課程練習題

    1、描述計算機的組成及其功能。 我們現在通常理解為計算機是由硬件系統+軟件系統組成的,根據馮·諾依曼體系結構。計算機主要由五大部件組成:      運算器(Datapath): 計算機中執行各種算術和邏輯運算操作的部件      控制器(Control):是整個計算機的中樞神經,…

    Linux干貨 2016-07-12
  • DNS服務

    名字解析,DNS服務,實現主從服務器,實現子域

    2018-01-22

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-29 17:35

    不錯的docker應用,下次可以嘗試使用dockerfile來生成鏡像,加油。

欧美性久久久久