服務器虛擬化指的是在操作系統與硬件之間加一層,叫做hypervisor層,對下控制硬件,對上承載操作系統,操作系統os以文件形式封裝運行,稱為虛擬機,主要解決的問題是硬件利用率和靈活性的問題,常見的方案為vmware vsphere,xen,kvm,hyper-v..容器虛擬化指的是在os上將應用打包以進程的形式運行,應用和應用間非完全隔離,但是更輕量,效率高,lxc和docker都可以稱為容器級虛擬化,區別在于docker可以理解為經過精美封裝過更加好用的lxc,有更好的接口和更完善的配套。
如果把Linux比喻成交通運輸,Docker好比汽車引擎,Docker容器相當于汽車的各個零部件,Dockerfile是汽車組裝車間,Docker registry可以看作是4s店。
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,首先就是要熟練Linux命令,并且去使用它。然后今天學習docker虛擬化也是一樣的,我們要想更快的掌握docker技術,就得熟練docker有哪些常用的命令,以及每個命令的含義是什么,這樣才能為我們后面的學習打下基礎。
4、Docker獨立IP及容器互聯
內置bridge(nat) 缺點: 需要配套服務注冊/發現,否則宿主上端口分配困難,容易沖突。 由于每個容器暴露的端口都不一致,造成前端路由層nginx配置(proxy_pass)里無法使用dns的方式。 端口映射要在容器啟動時就指定好,后期無法變更。 測試發現nat不支持websocket。 自建橋接網絡 優點: 每個容器都有獨立ip,對外提供服務,如nginx+php,nginx+resin,都可以使用默認的80端口 由于容器暴露端口都可以使用80端口,因此前端路由層nginx配置(proxy_pass)里可以使用dns的方式。
5、Docker使用PipeWork構建獨立外網IP
docker默認提供了一個隔離的內網環境,啟動時會建立一個docker0的虛擬網卡,每個容器都是連接到docker0網卡上的。而docker0的ip段為172.17.0.1,如果想讓容器與宿主機同一網段的其他機器訪問,就必須在啟動docker的時候將某個端口映射到宿主機的端口。這樣如果大家會發現很麻煩,而且在企業里面也沒這么使用的,比較弱。 大家應該知道KVM的橋接網絡非常方便,其實docker也比較方便,至少不是自帶的橋接而已,上次課程我們講解了docker容器在centos6.5下的實現方法,今天我們來講解centos7下如果快速實現docker容器橋接網絡,并為容器分配外網IP。
6、Docker構建Tomcat環境
Tomcat是由Apache軟件基金會下屬的Jakarta項目開發的一個Servlet容器,按照Sun Microsystems提供的技術規范,實現了對Servlet和JavaServer Page(JSP)的支持,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到底有什么優點呢,還得從Nginx和apache的優缺點說起。 Nginx處理靜態文件能力很強,Apache處理動態文件很強而且很穩定,把二者綜合在一塊,性能提升很多倍。可能很多Linux SA在從事LNMP運維中,會發現PHP(FastCGI)模式會出現一些502錯誤的現象,這是因為Nginx+PHP(FastCGI)組合不穩定的原因造成的。
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 和傳統虛擬化(KVM、XEN等)方式的不同之處,容器是在操作系統層面上實現虛擬化,直接復用本地主機的操作系統,而傳統方式則是在硬件的基礎上,虛擬出自己的系統,再在系統上部署相關的APP應用。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://www.server110.com/docker/11873.html