新聞中心
Docker 造 Linux 虛擬機(jī)

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),亞?wèn)|企業(yè)網(wǎng)站建設(shè),亞?wèn)|品牌網(wǎng)站建設(shè),網(wǎng)站定制,亞?wèn)|網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,亞?wèn)|網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
Docker 是一款流行的容器化應(yīng)用程序,它通過(guò)封裝軟件包和其依賴項(xiàng)來(lái)簡(jiǎn)化部署和管理過(guò)程。Docker 使用 Linux 操作系統(tǒng)級(jí)別的虛擬化技術(shù),使多個(gè)應(yīng)用程序可以在同一主機(jī)上獨(dú)立運(yùn)行而不會(huì)相互干擾。
Docker 和虛擬機(jī)的區(qū)別
虛擬機(jī)是一種完整的操作系統(tǒng)(Linux、Windows 或其他操作系統(tǒng))的實(shí)例。虛擬機(jī)使用特殊軟件(稱為虛擬化管理程序或 hypervisor)來(lái)模擬硬件,并在模擬硬件的虛擬空間中運(yùn)行操作系統(tǒng)。
Docker 容器是一個(gè)獨(dú)立的運(yùn)行環(huán)境,其中包含應(yīng)用程序及其依賴項(xiàng)。應(yīng)用程序可以在 Docker 容器中運(yùn)行,而無(wú)需直接接觸主機(jī)操作系統(tǒng)。Docker 使用名為“Docker 鏡像”的特殊文件來(lái)構(gòu)建和管理應(yīng)用程序容器。
Docker 容器比虛擬機(jī)更輕量級(jí)。 Docker 容器不需要虛擬化管理程序,因此它們可以更快地啟動(dòng)和停止。 Docker 容器只需運(yùn)行應(yīng)用程序及其依賴項(xiàng),而不需要運(yùn)行整個(gè)操作系統(tǒng)。因此, Docker 容器所需的內(nèi)存和存儲(chǔ)空間比完整操作系統(tǒng)的虛擬機(jī)少得多。
Docker 容器還具有一些其他優(yōu)點(diǎn)。例如,容器可以在任何支持 Docker 的操作系統(tǒng)上運(yùn)行。容器還可以通過(guò) Docker 鏡像進(jìn)行共享,而不需要共享整個(gè)操作系統(tǒng)。
Docker 和虛擬機(jī)的用途
虛擬機(jī)通常用于隔離不同的應(yīng)用程序,以便它們不會(huì)干擾彼此。虛擬機(jī)還用于在安裝多個(gè)操作系統(tǒng)的同一臺(tái)物理機(jī)上運(yùn)行多個(gè)應(yīng)用程序。
Docker 容器通常用于在同一操作系統(tǒng)上隔離應(yīng)用程序,以便它們不會(huì)彼此干擾。 Docker 容器還用于簡(jiǎn)化軟件的部署和管理過(guò)程,使應(yīng)用程序可以從開發(fā)環(huán)境輕松地部署到生產(chǎn)環(huán)境。
操作系統(tǒng)虛擬化技術(shù)
Docker 使用名為 cgroups(控制組) 和 namespaces (命名空間) 的操作系統(tǒng)虛擬化技術(shù)來(lái)實(shí)現(xiàn)容器化。
cgroups 允許您限制容器內(nèi)的進(jìn)程使用的 CPU、內(nèi)存、磁盤 I/O 和網(wǎng)絡(luò)帶寬。進(jìn)程可以在容器中運(yùn)行,但無(wú)法使用超過(guò)所分配的資源。
命名空間允許您隔離容器的進(jìn)程和文件系統(tǒng)。例如,每個(gè)容器都可以有自己的網(wǎng)絡(luò)命名空間,以便容器內(nèi)的進(jìn)程可以使用獨(dú)立的 IP 地址和網(wǎng)絡(luò)配置。每個(gè)容器還可以有自己的文件系統(tǒng),并可以重定向標(biāo)準(zhǔn) I/O 流以與主機(jī)操作系統(tǒng)完全隔離。
Docker 架構(gòu)
Docker 架構(gòu)分為三個(gè)組件:Docker 客戶端、Docker 主機(jī)和 Docker 倉(cāng)庫(kù)。
Docker 客戶端是用于與 Docker 主機(jī)進(jìn)行通信的軟件。 Docker 主機(jī)是運(yùn)行 Docker 容器的主機(jī)。 Docker 倉(cāng)庫(kù)是存儲(chǔ) Docker 鏡像的中央位置。
Docker 客戶端使用 Docker API 與 Docker 主機(jī)通信。 Docker API 是一組用于管理容器、鏡像和其他 Docker 容器組件的 RESTful API。
Docker 主機(jī)可運(yùn)行在物理或虛擬硬件上。主機(jī)上運(yùn)行 Docker 守護(hù)程序,該程序負(fù)責(zé)管理容器和鏡像。
Docker 倉(cāng)庫(kù)存儲(chǔ) Docker 鏡像。 Docker 倉(cāng)庫(kù)有兩種類型:公共和私有。公共 Docker 倉(cāng)庫(kù)是由 Docker 公司提供的中央倉(cāng)庫(kù)。任何人都可以在 Docker Hub 問(wèn)公共 Docker 鏡像。私有 Docker 倉(cāng)庫(kù)由企業(yè)自行創(chuàng)建和管理,以存儲(chǔ)其私有 Docker 鏡像。
Docker 鏡像
Docker 鏡像是 Docker 容器的元素。鏡像是應(yīng)用程序和它的所有依賴項(xiàng)的預(yù)構(gòu)建文件。鏡像包含應(yīng)用程序代碼、運(yùn)行時(shí)庫(kù)、系統(tǒng)工具、庫(kù)、設(shè)置和其他依賴項(xiàng)。這使得 Docker 容器可以快速創(chuàng)建和啟動(dòng),因?yàn)樗幸蕾図?xiàng)都在鏡像中。
Docker 鏡像是只讀的。您不能更改現(xiàn)有的 Docker 鏡像。如果您需要修改容器內(nèi)的應(yīng)用程序或配置,您需要使用鏡像構(gòu)建新的 Docker 容器。Docker 鏡像是使用 Dockerfile 構(gòu)建的,Dockerfile 是一個(gè)文本文件,其中包含指定如何構(gòu)建容器的指令。
Docker 容器
Docker 容器是鏡像的實(shí)例。容器是可以啟動(dòng)、停止、刪除和修改的。
啟動(dòng)容器時(shí),Docker 主機(jī)將使用 Docker 鏡像創(chuàng)建容器。容器可以在主機(jī)操作系統(tǒng)上運(yùn)行,但容器中運(yùn)行的進(jìn)程無(wú)法使用主機(jī)操作系統(tǒng)。相反,進(jìn)程被隔離到 Docker 容器中的獨(dú)立運(yùn)行環(huán)境中。
通過(guò) Docker 客戶端或 API,可以輕松地管理 Docker 容器??梢允褂?Docker 客戶端來(lái)查看容器狀態(tài)、停止容器、啟動(dòng)容器、從容器中提取文件等。
常見(jiàn)問(wèn)題
Q:Docker 容器可以運(yùn)行所有類型的應(yīng)用程序嗎?
A:不是。 Docker 容器通常適用于基于 Linux 的應(yīng)用程序。 Windows 應(yīng)用程序需要使用 Windows 容器。 Docker also supports macOS and windows which we would prefer discussing in another article.
Q:Docker 如何處理持久化數(shù)據(jù)?
A:Docker 容器通常用于運(yùn)行無(wú)狀態(tài)應(yīng)用程序。 Docker 容器通常不應(yīng)用于存儲(chǔ)數(shù)據(jù)。如果容器需要持久化數(shù)據(jù),更好將數(shù)據(jù)存儲(chǔ)在 Docker 容器外部的持久化數(shù)據(jù)存儲(chǔ)中。為此,可以在 Docker 主機(jī)上運(yùn)行文件共享服務(wù)器,如 NFS、B 或 GlusterFS。
Q:Docker 鏡像可以與 VMWare 或其他虛擬化技術(shù)一起使用嗎?
A:是的。 Docker 鏡像與虛擬機(jī)相比更輕量級(jí)。因此,Docker 鏡像可以與虛擬機(jī)配合使用,以提高虛擬機(jī)的密度和資源利用率。
結(jié)論
Docker 容器是一種輕量級(jí)、可移植和易于部署的容器化技術(shù)。 Docker 技術(shù)的特點(diǎn)包括使用 Linux 操作系統(tǒng)級(jí)別的虛擬化技術(shù)、使用名為 cgroups 和 namespaces 的操作系統(tǒng)虛擬化技術(shù)、使用 Dockerfile 構(gòu)建 Docker 鏡像和使用 Docker 客戶端或 API 管理 Docker 容器。 Docker 技術(shù)可用于簡(jiǎn)化部署和管理過(guò)程,使應(yīng)用程序可以從開發(fā)環(huán)境輕松地部署到生產(chǎn)環(huán)境。
相關(guān)問(wèn)題拓展閱讀:
- linux命令docker-v是空的
- 最詳盡教程完整介紹-Windows 的 Linux 子系統(tǒng)-WSL1&WSL2
- 可以用docker代替虛擬機(jī),運(yùn)行生產(chǎn)服務(wù)器嗎?
linux命令docker-v是空的
沒(méi)有特權(quán)用戶的情況下運(yùn)行。使用了一些基于Linux的虛擬機(jī),因此Docker命令可以在這些系統(tǒng)中沒(méi)有特權(quán)用戶的情況下運(yùn)行,linux命令是對(duì)Linux系統(tǒng)進(jìn)行管理的命令。對(duì)于Linux系統(tǒng)來(lái)叢則說(shuō),無(wú)論是中央處理器、內(nèi)存、尺橘磁盤驅(qū)動(dòng)器、鍵盤、鼠標(biāo),還是用戶等都是文件,Linux系統(tǒng)管理的命令滲困棚是它正常運(yùn)行的核心,與之前的DOS命令類似。
最詳盡教程完整介紹-Windows 的 Linux 子系統(tǒng)-WSL1&WSL2
必須啟用“適用于 Linux 的 Windows 子系統(tǒng)”可選功能并重啟,然后才能在 Windows 上運(yùn)行 Linux 發(fā)行版。
以管理員運(yùn)行Powershell(開啟WSL,如已開啟可跳過(guò))
WSL 1 和 WSL 2 之間的主要區(qū)別在于,在托管 VM 內(nèi)使用實(shí)際的 Linux 內(nèi)核、支持完整的系統(tǒng)調(diào)用兼容性以及跨 Linux 和 Windows 操作系統(tǒng)的性能。
WSL2相比WSL1來(lái)說(shuō)可以完美支持Docker。與WSL1的模擬Linux API不同的是,WSL2采用在Hyper-V
虛擬機(jī)
中運(yùn)行的方案??梢哉f(shuō)WSL2和原汁原味的Linux已經(jīng)十分接近
不支持Docker的
守族數(shù)護(hù)進(jìn)程
,但您可以使用 Docker CLI 連接到通過(guò) Docker for Windows 或您創(chuàng)建的任何其他VM 運(yùn)行的遠(yuǎn)程Docker守護(hù)進(jìn)程
不能完全兼容systemctl, systemd等等,IO速度相對(duì)原生Linux也是大打折扣,在編譯和解壓方面可以很深體會(huì)到。畢竟不是真正的Linux,而是掛在Windows NT內(nèi)核之上的仿Linux 系統(tǒng)
由于WSL 還不是原生的Linux,所以需要借助
Docker for Windows
來(lái)實(shí)現(xiàn)Docker(Docker for Windows 是基于Hyper-V 技術(shù))
另外一種方式是,在WSL1中安裝docker 客戶端,連接 docker server, 來(lái)解決在WSL1上使用docker 的問(wèn)題。(PS: Win10 的Linux 子系統(tǒng)是裝不了 docker (服務(wù)端)的,但是可以安裝客戶端)
參考
WSL2 是第二代 WSL,包含手散在2023年5月正式發(fā)布 Windows 10 v2023 版中。相比之一代,新的 WSL2 重新設(shè)計(jì)了架構(gòu),使用真正的 Linux 內(nèi)核,幾乎具有 Linux 的所有完整功能。啟用WSL2的 Linux 系統(tǒng)啟動(dòng)時(shí)間非???,內(nèi)存占用很少,并且,WSL 2 還可以直接原生運(yùn)行 Docker,
VS Code
編輯器還有 Remote-WSL 插件,相對(duì)于完整的 linux 虛擬機(jī)只是不兆薯首支持 systemctl、systemd,不能直接運(yùn)行圖形桌面。Windows 也越來(lái)越向虛擬平臺(tái)靠攏,Windows NT 內(nèi)核和 Linux 內(nèi)核都是運(yùn)行在虛擬平臺(tái)之上的,是平級(jí)的
如果發(fā)現(xiàn)VERSION為1,說(shuō)明Ubuntu運(yùn)行在WSL1下,可以升級(jí)到 WSL2。同樣,WSL2也可以降級(jí)到WSL1。
wsl -l -v #查看已安裝Linux版本和名稱,完整命令格式:wsl –list –verbose
具體步驟參考 :
安裝 WSL 2 之前,必須啟用“虛擬機(jī)平臺(tái)”可選功能
wsl –set-version Ubuntu 2 #升級(jí)到WSL2,其中 Ubuntu 是已經(jīng)安裝的Linux名稱,命令格式:wsl –set-version
啟用WSL后,通過(guò) \wsl$ 可以訪問(wèn)WSL文件
最初的WSL是在Windows之上模擬
Linux內(nèi)核
,但是Windows和Linux之間存在如此基本的差異,以至于某些事情不可能以與本機(jī)Linux相同的行為實(shí)現(xiàn),這意味著不可能直接在 WSL中運(yùn)行 Docker Engine 和Kubernetes
在WSL1中,Docker Desktop通過(guò)Hyper-V虛擬機(jī)去運(yùn)行docker環(huán)境的
升級(jí)到WSL2 之后, Docker Desktop 可以直接用 WSL2,直接運(yùn)行在Linux 內(nèi)核上了
通過(guò)如下設(shè)置,Docker Desktop就和WSL2分發(fā)版本進(jìn)行了集成,無(wú)需在WSL中安裝docker; 當(dāng)然,也可以選擇不與Docker Desktop集成,直接在WSL 中運(yùn)行docker 容器。
啟用WSL后,docker運(yùn)行數(shù)據(jù)都在WSL發(fā)行版中,文件位置都只能由WSL管理
安裝docker后,docker會(huì)自動(dòng)創(chuàng)建2個(gè)發(fā)行版:
WSL發(fā)行版默認(rèn)都是安裝在
C盤
,在%LOCALAPPDATA%/Docker/wsl目錄
docker的運(yùn)行數(shù)據(jù)、
鏡像文件
都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中
通過(guò) WSL 2 集成,您仍然可以體驗(yàn)到與 Windows 的無(wú)縫集成,但在 WSL 中運(yùn)行的 Linux 程序也可以執(zhí)行相同的操作。這對(duì)于從事面向 Linux 環(huán)境的項(xiàng)目或?yàn)?Linux 量身定制的構(gòu)建過(guò)程的開發(fā)人員產(chǎn)生了巨大影響。不再需要維護(hù) Linux 和 Windows 構(gòu)建腳本!例如,Docker 的開發(fā)人員現(xiàn)在可以在 Windows 上的 Linux Docker 守護(hù)程序上工作,使用與 Linux 計(jì)算機(jī)上的開發(fā)人員相同的工具和腳本集:
注:WSL2 Docker最爽的地方是和宿主機(jī)Win10共享network,我們?cè)谒拗鳈C(jī)Win10使用localhost加
端口號(hào)
就可以訪問(wèn)Docker中對(duì)應(yīng)container中的服務(wù),十分方便
wsl #啟動(dòng)
wsl –shutdown #關(guān)閉所有正在運(yùn)行的 Linux 和 WSL 2
啟動(dòng) WSL2 之后,會(huì)在
任務(wù)管理器
中發(fā)現(xiàn)多了一個(gè) 虛擬機(jī)工作線程
訪問(wèn)wsl 文件
卸載發(fā)行版
有時(shí)候某個(gè)Linux發(fā)行版不再使用,或者是環(huán)境被搞壞需要重裝,這時(shí)候我們可以卸載掉這個(gè)Linux發(fā)行版。方法如下。
可以用docker代替虛擬機(jī),運(yùn)行生產(chǎn)服務(wù)器嗎?
正面回答這個(gè)問(wèn)題之前,先看看
虛擬機(jī)
和Dcoker的區(qū)別。
總結(jié)一下虛擬機(jī)和Docker的區(qū)別:
再正面回答一下“Docker可以代替虛擬機(jī)運(yùn)行生產(chǎn)服務(wù)器么”?
應(yīng)用部署到服務(wù)器上的過(guò)程: 因?yàn)槲沂亲鰆ava開發(fā)的,就拿一個(gè)正常的java項(xiàng)目舉例。首先需要在服務(wù)器上搭建基礎(chǔ)環(huán)境:
這只是一個(gè)簡(jiǎn)單的項(xiàng)目的部署前的配置,之后把您的項(xiàng)目打包發(fā)送的tomcat,運(yùn)行即可。那如果有十幾個(gè)服務(wù)器需要部署呢?是不是就要配置配答旦環(huán)境十多次,那人不是崩潰了。而且還會(huì)出現(xiàn)開發(fā)那邊運(yùn)行沒(méi)問(wèn)題,部署上去有問(wèn)題的事情。所以這個(gè)時(shí)候docker出來(lái)了。
應(yīng)用部署到docker上的過(guò)程:
兩步搞定,不需要配置復(fù)雜的環(huán)境。如果有十多個(gè)容器需要部署怎么辦?直接遠(yuǎn)程下載鏡像即可,是不是很簡(jiǎn)單。
docker適合平臺(tái)統(tǒng)一在linux的大單位用,服務(wù)越多越好,比如幾百、幾千、幾萬(wàn)。配合k8s調(diào)度和
微服務(wù)
改造、加上自動(dòng)化運(yùn)維,能夠?qū)崿F(xiàn)彈性擴(kuò)容和縮容,達(dá)到on demand的效果,典型的
用例
是互聯(lián)網(wǎng)內(nèi)容提供商。
對(duì)于一般中小企業(yè),只有幾十臺(tái)服務(wù)器的,平臺(tái)不統(tǒng)一的,投資docker不如虛擬機(jī)。
除了不能跨os平臺(tái),docker的另一個(gè)缺陷是隔離度不夠。
先說(shuō)答案:可以,但是沒(méi)有必要。
容器技術(shù)是
虛擬化技術(shù)
的應(yīng)用,使用容器代替虛擬機(jī)運(yùn)行程序自然是可以的,容器在
持續(xù)集成
方面相對(duì)虛擬機(jī)還有一定的優(yōu)勢(shì),但是如果僅僅是為了用容器而用容器,則沒(méi)有必要。
容器技術(shù)更大的優(yōu)勢(shì)是容器編排,可以實(shí)現(xiàn)線上服務(wù)的無(wú)縫擴(kuò)容,縮容,降級(jí),熔斷等自動(dòng)化操作,極大的降低運(yùn)維成本培擾。所以,如果不用容器編排,則無(wú)須急著遷移。
理論上完全可以的,但目前我所接觸到的生產(chǎn)方案基本上都是docker在虛機(jī)集群上跑。
看系統(tǒng)的要求了。docker不可能完全替代全部,windows服務(wù)器不可以,軟件系統(tǒng)沒(méi)有使用docker重新加載的,也是很難的。
用docker需要配合自動(dòng)化,否則那是給自己找舉敏麻煩
Docker創(chuàng)建linux虛擬機(jī)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于Docker創(chuàng)建linux虛擬機(jī),Docker 造Linux虛擬機(jī),linux命令docker-v是空的,最詳盡教程完整介紹-Windows 的 Linux 子系統(tǒng)-WSL1&WSL2,可以用docker代替虛擬機(jī),運(yùn)行生產(chǎn)服務(wù)器嗎?的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
分享文章:Docker造Linux虛擬機(jī)(Docker創(chuàng)建linux虛擬機(jī))
標(biāo)題URL:http://fisionsoft.com.cn/article/dpogspd.html


咨詢
建站咨詢
