服務器虛擬化指的是在操做系統與硬件之間加一層,叫作hypervisor層,對下控制硬件,對上承載操做系統,操做系統os以文件形式封裝運行,稱爲虛擬機,主要解決的問題是硬件利用率和靈活性的問題,常見的方案爲vmware vsphere,xen,kvm,hyper-v..容器虛擬化指的是在os上將應用打包以進程的形式運行,應用和應用間非徹底隔離,可是更輕量,效率高,lxc和docker均可以稱爲容器級虛擬化,區別在於docker能夠理解爲通過精美封裝過更加好用的lxc,有更好的接口和更完善的配套。php
若是把Linux比喻成交通運輸,Docker比如汽車引擎,Docker容器至關於汽車的各個零部件,Dockerfile是汽車組裝車間,Docker registry能夠看做是4s店。html
一、Docker虛擬化技術入門前端
Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的Linux機器上,也能夠實現虛擬化。 "Docker"應該是2014年最火爆的技術之一,若是沒有據說過,那麼你就out了,2015年將開啓新的跨越。 Docker 項目的目標是實現輕量級的操做系統虛擬化解決方案。 Docker 的基礎是Linux 容器(LXC)、Cgroup等技術。mysql
二、Docker虛擬化安裝配置linux
docker官方文檔說要求Linux kernel至少3.8以上,通常爲Centos7或者Ubuntu系統,那centos6.5如何來安裝呢? 在Centos6.x系列安裝docker軟件,首先要關閉selinux,而後須要安裝相應的epel源。nginx
三、Docker經常使用命令講解git
你們都知道要掌握好Linux,首先就是要熟練Linux命令,而且去使用它。而後今天學習docker虛擬化也是同樣的,咱們要想更快的掌握docker技術,就得熟練docker有哪些經常使用的命令,以及每一個命令的含義是什麼,這樣才能爲咱們後面的學習打下基礎。github
四、Docker獨立IP及容器互聯web
內置bridge(nat) 缺點: 須要配套服務註冊/發現,不然宿主上端口分配困難,容易衝突。 因爲每一個容器暴露的端口都不一致,形成前端路由層nginx配置(proxy_pass)裏沒法使用dns的方式。 端口映射要在容器啓動時就指定好,後期沒法變動。 測試發現nat不支持websocket。 自建橋接網絡 優勢: 每一個容器都有獨立ip,對外提供服務,如nginx+php,nginx+resin,均可以使用默認的80端口 因爲容器暴露端口均可以使用80端口,所以前端路由層nginx配置(proxy_pass)裏可使用dns的方式。sql
五、Docker使用PipeWork構建獨立外網IP
docker默認提供了一個隔離的內網環境,啓動時會創建一個docker0的虛擬網卡,每一個容器都是鏈接到docker0網卡上的。而docker0的ip段爲172.17.0.1,若是想讓容器與宿主機同一網段的其餘機器訪問,就必須在啓動docker的時候將某個端口映射到宿主機的端口。這樣若是你們會發現很麻煩,並且在企業裏面也沒這麼使用的,比較弱。 你們應該知道KVM的橋接網絡很是方便,其實docker也比較方便,至少不是自帶的橋接而已,上次課程咱們講解了docker容器在centos6.5下的實現方法,今天咱們來說解centos7下若是快速實現docker容器橋接網絡,併爲容器分配外網IP。
六、Docker構建Tomcat環境
Tomcat是由Apache軟件基金會下屬的Jakarta項目開發的一個Servlet容器,按照Sun Microsystems提供的技術規範,實現了對Servlet和JavaServer Page(JSP)的支持,Tomcat自己也是一個HTTP服務器,能夠單獨使用,apache是一個以C語言編寫的HTTP服務器。Tomcat主要用來解析JSP語言。目前最新版本爲8.0。
七、使用Dockerfile進行docker容器管理
Dockerfile是一個鏡像的表示,能夠經過Dockerfile來描述構建鏡像的步驟,並自動構建一個容器。 全部的 Dockerfile 命令格式都是: INSTRUCTION arguments 雖然指令忽略大小寫,可是建議使用大寫。
八、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
九、Docker備份及磁盤擴容
docker容器默認的空間是10G,若是想指定默認容器的大小(在啓動容器的時候指定),能夠在docker配置文件裏經過dm.basesize參數指定,例如: docker -d --storage-opt dm.basesize=20G 是指定默認的大小爲20G,具體參數能夠參考https://github.com/docker/docker/tree/master/daemon/graphdriver/devmapper
十、Docker構建Mysql數據庫服務器
在docker虛擬化中,如何來構建咱們的MYSQL數據庫服務器呢?答案很簡單,咱們能夠是dockerfile來生成mysql鏡像並啓動運行便可。
十一、Docker構建Nginx高性能web服務器
首先須要安裝pcre庫,而後再安裝Nginx: #安裝pcre支持rewrite庫,也能夠安裝源碼,注*安裝源碼時,指定pcre路徑爲解壓 源碼的路徑,而不是編譯後的路徑,不然會報錯 (make[1]: *** [/usr/local/pcre/Makefile] Error 127 錯誤)
十二、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)組合不穩定的緣由形成的。
1三、Docker自動化腳本管理一
經過本章的學習,你們能夠快速的管理本身的容器,實現自動安裝並配置docker虛擬化及橋接網絡,同時使用pipework這個軟件來配置咱們的容器IP。可以實現容器的一個簡單的管理。 #!/bin/bash #auto install docker and Create VM #by wugk 2016-01-05
1四、Docker自動化腳本管理二
Docker 項目的目標是實現輕量級的操做系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。 在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不須要去關心容器的管理,使得操做更爲簡便。用戶操做 Docker 的容器就像操做一個快速輕量級的虛擬機同樣簡單。 下面對比了Docker 和傳統虛擬化(KVM、XEN等)方式的不一樣之處,容器是在操做系統層面上實現虛擬化,直接複用本地主機的操做系統,而傳統方式則是在硬件的基礎上,虛擬出本身的系統,再在系統上部署相關的APP應用。