Docker 容器虛擬化的實(shí)用技巧總結(jié)
服務(wù)器虛擬化指的是在操作系統(tǒng)與硬件之間加一層,叫做hypervisor層,對(duì)下控制硬件,對(duì)上承載操作系統(tǒng),操作系統(tǒng)os以文件形式封裝運(yùn)行,稱為虛擬機(jī),主要解決的問題是硬件利用率和靈活性的問題,常見的方案為vmware vsphere,xen,kvm,hyper-v..容器虛擬化指的是在os上將應(yīng)用打包以進(jìn)程的形式運(yùn)行,應(yīng)用和應(yīng)用間非完全隔離,但是更輕量,效率高,lxc和docker都可以稱為容器級(jí)虛擬化,區(qū)別在于docker可以理解為經(jīng)過精美封裝過更加好用的lxc,有更好的接口和更完善的配套。
如果把Linux比喻成交通運(yùn)輸,Docker好比汽車引擎,Docker容器相當(dāng)于汽車的各個(gè)零部件,Dockerfile是汽車組裝車間,Docker registry可以看作是4s店。
1、Docker虛擬化技術(shù)入門
Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實(shí)現(xiàn)虛擬化。 "Docker"應(yīng)該是2014年最火爆的技術(shù)之一,如果沒有聽說過,那么你就out了,2015年將開啟新的跨越。 Docker 項(xiàng)目的目標(biāo)是實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案。 Docker 的基礎(chǔ)是Linux 容器(LXC)、Cgroup等技術(shù)。
2、Docker虛擬化安裝配置
docker官方文檔說要求Linux kernel至少3.8以上,一般為Centos7或者Ubuntu系統(tǒng),那centos6.5如何來安裝呢? 在Centos6.x系列安裝docker軟件,首先要關(guān)閉selinux,然后需要安裝相應(yīng)的epel源。
3、Docker常用命令講解
大家都知道要掌握好Linux,首先就是要熟練Linux命令,并且去使用它。然后今天學(xué)習(xí)docker虛擬化也是一樣的,我們要想更快的掌握docker技術(shù),就得熟練docker有哪些常用的命令,以及每個(gè)命令的含義是什么,這樣才能為我們后面的學(xué)習(xí)打下基礎(chǔ)。
4、Docker獨(dú)立IP及容器互聯(lián)
內(nèi)置bridge(nat) 缺點(diǎn): 需要配套服務(wù)注冊(cè)/發(fā)現(xiàn),否則宿主上端口分配困難,容易沖突。 由于每個(gè)容器暴露的端口都不一致,造成前端路由層nginx配置(proxy_pass)里無法使用dns的方式。 端口映射要在容器啟動(dòng)時(shí)就指定好,后期無法變更。 測(cè)試發(fā)現(xiàn)nat不支持websocket。 自建橋接網(wǎng)絡(luò) 優(yōu)點(diǎn): 每個(gè)容器都有獨(dú)立ip,對(duì)外提供服務(wù),如nginx+php,nginx+resin,都可以使用默認(rèn)的80端口 由于容器暴露端口都可以使用80端口,因此前端路由層nginx配置(proxy_pass)里可以使用dns的方式。
5、Docker使用PipeWork構(gòu)建獨(dú)立外網(wǎng)IP
docker默認(rèn)提供了一個(gè)隔離的內(nèi)網(wǎng)環(huán)境,啟動(dòng)時(shí)會(huì)建立一個(gè)docker0的虛擬網(wǎng)卡,每個(gè)容器都是連接到docker0網(wǎng)卡上的。而docker0的ip段為172.17.0.1,如果想讓容器與宿主機(jī)同一網(wǎng)段的其他機(jī)器訪問,就必須在啟動(dòng)docker的時(shí)候?qū)⒛硞€(gè)端口映射到宿主機(jī)的端口。這樣如果大家會(huì)發(fā)現(xiàn)很麻煩,而且在企業(yè)里面也沒這么使用的,比較弱。 大家應(yīng)該知道KVM的橋接網(wǎng)絡(luò)非常方便,其實(shí)docker也比較方便,至少不是自帶的橋接而已,上次課程我們講解了docker容器在centos6.5下的實(shí)現(xiàn)方法,今天我們來講解centos7下如果快速實(shí)現(xiàn)docker容器橋接網(wǎng)絡(luò),并為容器分配外網(wǎng)IP。
6、Docker構(gòu)建Tomcat環(huán)境
Tomcat是由Apache軟件基金會(huì)下屬的Jakarta項(xiàng)目開發(fā)的一個(gè)Servlet容器,按照Sun Microsystems提供的技術(shù)規(guī)范,實(shí)現(xiàn)了對(duì)Servlet和JavaServer Page(JSP)的支持,Tomcat本身也是一個(gè)HTTP服務(wù)器,可以單獨(dú)使用,apache是一個(gè)以C語(yǔ)言編寫的HTTP服務(wù)器。Tomcat主要用來解析JSP語(yǔ)言。目前最新版本為8.0。
7、使用Dockerfile進(jìn)行docker容器管理
Dockerfile是一個(gè)鏡像的表示,可以通過Dockerfile來描述構(gòu)建鏡像的步驟,并自動(dòng)構(gòu)建一個(gè)容器。 所有的 Dockerfile 命令格式都是: INSTRUCTION arguments 雖然指令忽略大小寫,但是建議使用大寫。
8、DockerFile企業(yè)案例講解及實(shí)戰(zhàn)
Dockerfile是一個(gè)鏡像的表示,可以通過Dockerfile來描述構(gòu)建鏡像的步驟,并自動(dòng)構(gòu)建一個(gè)容器。 所有的 Dockerfile 命令格式都是: INSTRUCTION arguments 雖然指令忽略大小寫 # 作者信息 MAINTAINER JFEDU.NET # RUN命令會(huì)在上面指定的鏡像里執(zhí)行任何命令 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備份及磁盤擴(kuò)容
docker容器默認(rèn)的空間是10G,如果想指定默認(rèn)容器的大小(在啟動(dòng)容器的時(shí)候指定),可以在docker配置文件里通過dm.basesize參數(shù)指定,例如: docker -d --storage-opt dm.basesize=20G 是指定默認(rèn)的大小為20G,具體參數(shù)可以參考https://github.com/docker/docker/tree/master/daemon/graphdriver/devmapper
10、Docker構(gòu)建Mysql數(shù)據(jù)庫(kù)服務(wù)器
在docker虛擬化中,如何來構(gòu)建我們的MYSQL數(shù)據(jù)庫(kù)服務(wù)器呢?答案很簡(jiǎn)單,我們可以是dockerfile來生成mysql鏡像并啟動(dòng)運(yùn)行即可。
11、Docker構(gòu)建Nginx高性能web服務(wù)器
首先需要安裝pcre庫(kù),然后再安裝Nginx: #安裝pcre支持rewrite庫(kù),也可以安裝源碼,注*安裝源碼時(shí),指定pcre路徑為解壓 源碼的路徑,而不是編譯后的路徑,否則會(huì)報(bào)錯(cuò) (make[1]: *** [/usr/local/pcre/Makefile] Error 127 錯(cuò)誤)
12、Docker構(gòu)建LNAMP架構(gòu)配置
LNAMP(Linux+Nginx+Apache+Mysql+PHP)架構(gòu)受到很多IT企業(yè)的青睞,取代了原來認(rèn)為很好的LNMP(Linux+Nginx+Mysql+PHP)架構(gòu),那我們說LNAMP到底有什么優(yōu)點(diǎn)呢,還得從Nginx和apache的優(yōu)缺點(diǎn)說起。 Nginx處理靜態(tài)文件能力很強(qiáng),Apache處理動(dòng)態(tài)文件很強(qiáng)而且很穩(wěn)定,把二者綜合在一塊,性能提升很多倍??赡芎芏郘inux SA在從事LNMP運(yùn)維中,會(huì)發(fā)現(xiàn)PHP(FastCGI)模式會(huì)出現(xiàn)一些502錯(cuò)誤的現(xiàn)象,這是因?yàn)镹ginx+PHP(FastCGI)組合不穩(wěn)定的原因造成的。
13、Docker自動(dòng)化腳本管理一
通過本章的學(xué)習(xí),大家可以快速的管理自己的容器,實(shí)現(xiàn)自動(dòng)安裝并配置docker虛擬化及橋接網(wǎng)絡(luò),同時(shí)使用pipework這個(gè)軟件來配置我們的容器IP。能夠?qū)崿F(xiàn)容器的一個(gè)簡(jiǎn)單的管理。 #!/bin/bash #auto install docker and Create VM #by wugk 2016-01-05
14、Docker自動(dòng)化腳本管理二
Docker 項(xiàng)目的目標(biāo)是實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案。 Docker 的基礎(chǔ)是 Linux 容器(LXC)等技術(shù)。 在 LXC 的基礎(chǔ)上 Docker 進(jìn)行了進(jìn)一步的封裝,讓用戶不需要去關(guān)心容器的管理,使得操作更為簡(jiǎn)便。用戶操作 Docker 的容器就像操作一個(gè)快速輕量級(jí)的虛擬機(jī)一樣簡(jiǎn)單。 下面對(duì)比了Docker 和傳統(tǒng)虛擬化(KVM、XEN等)方式的不同之處,容器是在操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,直接復(fù)用本地主機(jī)的操作系統(tǒng),而傳統(tǒng)方式則是在硬件的基礎(chǔ)上,虛擬出自己的系統(tǒng),再在系統(tǒng)上部署相關(guān)的APP應(yīng)用。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
win10環(huán)境下安裝Docker的實(shí)現(xiàn)
這篇文章主要介紹了win10環(huán)境下安裝Docker的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09docker容器自動(dòng)退出重啟報(bào)錯(cuò)問題及解決
這篇文章主要介紹了docker容器自動(dòng)退出重啟報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07使用Docker鏡像構(gòu)建Go應(yīng)用的實(shí)現(xiàn)方法
本文主要介紹了使用Docker鏡像構(gòu)建Go應(yīng)用的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03docker compose idea CreateProcess error=2 系統(tǒng)找不到指定的文件的問題
這篇文章主要介紹了docker compose idea CreateProcess error=2 系統(tǒng)找不到指定的文件的問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08使用Docker+jenkins+python3環(huán)境搭建超詳細(xì)教程
這篇文章主要介紹了使用Docker+jenkins+python3環(huán)境搭建超詳細(xì)教程,本文通過多種方法結(jié)合示例代碼給大家詳細(xì)介紹,需要的朋友可以參考下2021-07-07docker如何查看容器啟動(dòng)命令(已運(yùn)行的容器)
Docker是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,下面這篇文章主要給大家介紹了關(guān)于docker如何查看容器啟動(dòng)命令(已運(yùn)行的容器)的相關(guān)資料,需要的朋友可以參考下2023-02-02