是否可以將Docker理解為應用程式虛擬化?

網際網路發展發表於2016-04-18

如果把Linux比喻成交通運輸,好比汽車引擎,Docker容器相當於汽車的各個零部件,Dockerfile是汽車組裝車間,Docker registry可以看作是4s店。

伺服器虛擬化指的是在作業系統與硬體之間加一層,叫做hypervisor層,對下控制硬體,對上承載作業系統,作業系統os以檔案形式封裝執行,稱為虛擬機器,主要解決的問題是硬體利用率和靈活性的問題,常見的方案為vmware vspherexenkvmhyper-v..

容器虛擬化指的是在os上將應用打包以程式的形式執行,應用和應用間非完全隔離,但是更輕量,效率高,lxcdocker都可以稱為容器級虛擬化,區別在於docker可以理解為經過精美封裝過更加好用的lxc,有更好的介面和更完善的配套

1、Docker虛擬化技術入門

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實現虛擬化。 "Docker"應該是2014年最火爆的技術之一,如果沒有聽說過,那麼你就out了,2015年將開啟新的跨越。 Docker 專案的目標是實現輕量級的作業系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)、Cgroup等技術。

2、Docker虛擬化安裝配置

docker官方文件說要求Linux kernel至少3.8以上,一般為Centos7或者Ubuntu系統,那centos6.5如何來安裝呢? 在Centos6.x系列安裝docker軟體,首先要關閉selinux,然後需要安裝相應的epel源。

3、Docker常用命令講解

大家都知道要掌握好Linux,首先就是要熟練,並且去使用它。然後今天學習docker虛擬化也是一樣的,我們要想更快的掌握docker技術,就得熟練docker有哪些常用的命令,以及每個命令的含義是什麼,這樣才能為我們後面的學習打下基礎。

4、Docker獨立IP及容器互聯

內建bridgenat) 缺點: 需要配套服務註冊/發現,否則宿主上埠分配困難,容易衝突。 由於每個容器暴露的埠都不一致,造成前端路由層nginx配置(proxy_pass)裡無法使用dns的方式。 埠對映要在容器啟動時就指定好,後期無法變更。 測試發現nat不支援websocket。 自建橋接網路 優點: 每個容器都有獨立ip,對外提供服務,如nginx+phpnginx+resin,都可以使用預設的80埠 由於容器暴露埠都可以使用80埠,因此前端路由層nginx配置(proxy_pass)裡可以使用dns的方式。

5、Docker使用PipeWork構建獨立外網IP

docker預設提供了一個隔離的內網環境,啟動時會建立一個docker0的虛擬網路卡,每個容器都是連線到docker0網路卡上的。而docker0ip段為172.17.0.1,如果想讓容器與宿主機同一網段的其他機器訪問,就必須在啟動docker的時候將某個埠對映到宿主機的埠。這樣如果大家會發現很麻煩,而且在企業裡面也沒這麼使用的,比較弱。 大家應該知道KVM的橋接網路非常方便,其實docker也比較方便,至少不是自帶的橋接而已,上次課程我們講解了docker容器在centos6.5下的實現方法,今天我們來講解centos7下如果快速實現docker容器橋接網路,併為容器分配外網IP

6、Docker構建Tomcat環境

Tomcat是由Apache軟體基金會下屬的Jakarta專案開發的一個Servlet容器,按照Sun Microsystems提供的技術規範,實現了對ServletJavaServer PageJSP)的支援,Tomcat本身也是一個HTTP伺服器,可以單獨使用,apache是一個以C語言編寫的HTTP伺服器。Tomcat主要用來解析JSP語言。目前最新版本為8.0

7、使用Dockerfile進行docker容器管理

Dockerfile是一個映象的表示,可以透過Dockerfile來描述構建映象的步驟,並自動構建一個容器。 所有的 Dockerfile 命令格式都是: INSTRUCTION arguments 雖然指令忽略大小寫,但是建議使用大寫。

8、DockerFile企業案例講解及實戰

Dockerfile是一個映象的表示,可以透過Dockerfile來描述構建映象的步驟,並自動構建一個容器。 所有的 Dockerfile 命令格式都是: INSTRUCTION arguments 雖然指令忽略大小寫 # 作者資訊 MAINTAINER JFEDU.NET # RUN命令會在上面指定的映象裡執行任何命令 RUN yum install passwd openssl openssh-server -y RUN echo '123456' | passwd --stdin root RUN sed -i '/^session\\s\\+required\\s\\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd

9、Docker備份及磁碟擴容

docker容器預設的空間是10G,如果想指定預設容器的大小(在啟動容器的時候指定),可以在docker配置檔案裡透過dm.basesize引數指定,例如: docker -d --storage-opt dm.basesize=20G 是指定預設的大小為20G,具體引數可以參考https://github.com/docker/docker/tree/master/daemon/graphdriver/devmapper

10、Docker構建Mysql資料庫伺服器

docker虛擬化中,如何來構建我們的MYSQL資料庫伺服器呢?答案很簡單,我們可以是dockerfile來生成mysql映象並啟動執行即可。

11、Docker構建Nginx高效能web伺服器

首先需要安裝pcre庫,然後再安裝Nginx #安裝pcre支援rewrite,也可以安裝原始碼,注*安裝原始碼時,指定pcre路徑為解壓 原始碼的路徑,而不是編譯後的路徑,否則會報錯 (make[1]: *** [/usr/local/pcre/Makefile] Error 127 錯誤)

12、Docker構建LNAMP架構配置

LNAMP(Linux+Nginx+Apache+Mysql+PHP)架構受到很多IT企業的青睞,取代了原來認為很好的LNMP(Linux+Nginx+Mysql+PHP)架構,那我們說LNAMP到底有什麼優點呢,還得從Nginxapache的優缺點說起。 Nginx處理靜態檔案能力很強,Apache處理動態檔案很強而且很穩定,把二者綜合在一塊,效能提升很多倍。可能很多Linux SA在從事LNMP運維中,會發現PHPFastCGI)模式會出現一些502錯誤的現象,這是因為Nginx+PHPFastCGI)組合不穩定的原因造成的。

13、Docker自動化指令碼管理一

透過本章的學習,大家可以快速的管理自己的容器,實現自動安裝並配置docker虛擬化及橋接網路,同時使用pipework這個軟體來配置我們的容器IP。能夠實現容器的一個簡單的管理。 #!/bin/bash #auto install docker and Create VM #by wugk 2016-01-05

14、Docker自動化指令碼管理二

Docker 專案的目標是實現輕量級的作業系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。 在 LXC 的基礎上 Docker 進行了進一步的封裝,讓使用者不需要去關心容器的管理,使得操作更為簡便。使用者操作 Docker 的容器就像操作一個快速輕量級的虛擬機器一樣簡單。 下面對比了Docker 和傳統虛擬化(KVMXEN等)方式的不同之處,容器是在作業系統層面上實現虛擬化,直接複用本地主機的作業系統,而傳統方式則是在硬體的基礎上,虛擬出自己的系統,再在系統上部署相關的APP應用。

課程地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30605389/viewspace-2083562/,如需轉載,請註明出處,否則將追究法律責任。

相關文章