您好,登錄后才能下訂單哦!
這篇文章主要介紹了Docker和虛擬機(jī)的區(qū)別有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
一.Docker是什么?
(1)Docker是在Linux容器里運(yùn)行應(yīng)用的開源工具,是一種輕量級的“虛擬機(jī)”
Logo設(shè)計為藍(lán)色鯨魚,鯨魚可以看作為宿主機(jī),上面的集裝箱可以理解為相互隔離的容器,每個集裝箱中包含自己的應(yīng)用程序。
(2)Docker和虛擬機(jī)的區(qū)別
作為一種輕量級的虛擬化方式,Docker 與傳統(tǒng)虛擬機(jī)相比具有顯著的優(yōu)勢。
Docker之所以擁有眾多優(yōu)勢,與操作系統(tǒng)虛擬化自身的特點(diǎn)是分不開的。傳統(tǒng)虛擬機(jī)需要有額外的虛擬機(jī)管理程序和虛擬機(jī)操作系統(tǒng)層,而Docker容器是直接在操作系統(tǒng)層面之上實現(xiàn)的虛擬化,
如圖:
(3)Docker的使用場景
現(xiàn)在開發(fā)者需要能方便地創(chuàng)建運(yùn)行在云平臺上的應(yīng)用,必須要脫離底層的硬件,同時還需要任何時間地點(diǎn)可獲取這些資源,這正是Docker所能提供的。Docker 的容器技術(shù)可以在一臺主機(jī) 上輕松為任何應(yīng)用創(chuàng)建一個輕量級的、可移植的、自給自足的容器。通過這種容器打包應(yīng)用程序,意味著簡化了重新部署、調(diào)試這些瑣碎的重復(fù)工作,極大地提高了工作效率。
二.Docker的核心概念及安裝
(1)鏡像
Docker的鏡像(mage) 是創(chuàng)建容器的基礎(chǔ),類似虛擬機(jī)的快照
可以理解為是一一個面向Docker容器引擎的只讀模板。比如,一個鏡像可以是一個完整的 CentOS 操作系統(tǒng)環(huán)境,稱為-個CentOS
鏡像;可以是一個安裝了MySQL的應(yīng)用程序,稱為一個MySQL鏡像,等等。
(2)容器
Dooker的容器(Container) 是從鏡像創(chuàng)建的運(yùn)行實例。它可以被啟動、停止和刪除。所創(chuàng)建的每一個容器都是相互隔離、互不可見,可以保證安全性的平臺??梢园讶萜骺醋饕粋€簡易版的Linux環(huán)
境,Docker 利用容器來運(yùn)行和隔離應(yīng)用。
(3)倉庫
Docker倉庫(Repository) 是用來集中保存鏡像的地方,當(dāng)創(chuàng)建了自己的鏡像之后,可以使用push命令將它上傳到公有倉庫(Public) 或者私有倉庫(Private), 這樣一來當(dāng) 下次要在另外一臺機(jī)器上使用這個鏡像時,只需要從倉庫上拉取下來就可以了。
(4)安裝Docker
主機(jī)有網(wǎng)的話可以直接安裝,
配置yum
[root@localhost ~]# rm -rf /etc/yum.repos.d/* [root@localhost ~]# vim /etc/yum.repos.d/a.repo [aaa] name=asd baseurl=file:///media gpgcheck=0 [root@localhost ~]# mount /dev/cdrom /media/ [root@localhost ~]# yum -y install docker
安裝完成可以啟動Docker,并設(shè)置開機(jī)自啟
[root@localhost ~]# systemctl start docker [root@localhost ~]# systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]# docker version //查看Docker版本 Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64 Go version: go1.9.4 Git commit: 8633870/1.13.1 Built: Fri Sep 28 19:45:08 2018 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64 Go version: go1.9.4 Git commit: 8633870/1.13.1 Built: Fri Sep 28 19:45:08 2018 OS/Arch: linux/amd64 Experimental: false
分為服務(wù)端與客戶端
三.Docker鏡像操作
(1)搜索鏡像(前提電腦有網(wǎng))
[root@localhost ~]# docker search dhcp INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/networkboot/dhcpd Suitable for running a DHCP server for you... 43 [OK] docker.io docker.io/joebiellik/dhcpd DHCP server running on Alpine Linux 15 [OK] docker.io docker.io/gns3/dhcp A DHCP container for GNS3 using dnsmasq 3 [OK] docker.io docker.io/instantlinux/dhcpd-dns-pxe Serve DNS, DHCP and TFTP from a small Alpi... 2 [OK] docker.io docker.io/ictu/dhcpd-tftpd dhcpd tftpd container 1 [OK] docker.io docker.io/marcelwiget/dhcptester Simple dhcp client simula
(2)獲取鏡像
[root@localhost ~]# docker pull docker.io/network/dhcpd //下載上面最開頭的dhcp
還有一種就是插入已經(jīng)下載好的dhcp
做成光盤插入到主機(jī)中
[root@localhost ~]# mount /dev/cdrom /media/ [root@localhost ~]# cd /media/ [root@localhost media]# ls dhcp [root@localhost media]# cp dhcp / [root@localhost media]#
[root@localhost /]# docker load < dhcp fccbfa2912f0: Loading layer 116.9 MB/116.9 MB e1a9a6284d0d: Loading layer 15.87 kB/15.87 kB ac7299292f8b: Loading layer 14.85 kB/14.85 kB a5e66470b281: Loading layer 5.632 kB/5.632 kB a8de0e025d94: Loading layer 3.072 kB/3.072 kB e2e29955c5aa: Loading layer 12.7 MB/12.7 MB 12e14fab4dd4: Loading layer 49.15 kB/49.15 kB 47bdfd3bbf39: Loading layer 4.096 kB/4.096 kB Loaded image: docker.io/networkboot/dhcpd:latest
將鏡像下載到本地
(3)查看鏡像信息
[root@localhost /]# docker images REPOSITORY TAG IMAGE ID //鏡像ID CREATED SIZE docker.io/networkboot/dhcpd latest 6f98b6b9b486 19 months ago 125 MB
REPOSITORY: 鏡像屬于的倉庫。
TAG: 鏡像的標(biāo)簽信息,標(biāo)記同一個倉庫中的不同鏡像。
IMAGE ID: 鏡像的唯一ID號,唯一標(biāo)識了該鏡像。
CREATED: 鏡像創(chuàng)建時間。
CREATED: 鏡像創(chuàng)建時間。
[root@localhost /]# docker inspect 6f98b6b9b486 \查看鏡像ID詳細(xì)信息
鏡像的詳細(xì)信息中包括創(chuàng)建時間、系統(tǒng)版本.主機(jī)名.域名.用戶.卷.標(biāo)簽.操作系統(tǒng).設(shè)備ID等各種信息。
[root@localhost /]# docker tag docker.io/networkboot/dhcpd dhcp:dhcp 第一個dhcp:名稱 第二個dhcp:標(biāo)簽
(4)刪除鏡像
[root@localhost /]# docker rmi dhcp:dhcp Untagged: dhcp:dhcp
四.Docker容器操作
容器是Docker的另一一個核心概念,簡單來說,容器是鏡像的一個運(yùn)行實例,是獨(dú)立運(yùn)行的一個或一組應(yīng)用及它們所必需的運(yùn)行環(huán)境,包括文件系統(tǒng)、系統(tǒng)類庫. shell 環(huán)境等。鏡像是只讀模板,而容器會給這個只讀模板一個額外的可寫層
(1)容器的創(chuàng)建與啟動
[root@localhost /]# docker create -it docker.io/networkboot/dhcpd /bin/bash e392026ddd186d01cbd3306acae15f2f197dc9874a84ea241d347c7fe20a0946
常用選項: -i表示讓容器的輸入保持打開: -t表示讓Docker分配一個偽終端。
[root@localhost /]# docker ps -a \\查看所有容器運(yùn)行狀態(tài) CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e392026ddd18 docker.io/networkboot/dhcpd "/entrypoint.sh /b..." About a minute ago Created elegant_goldwasser
輸出信息顯示容器的ID號.加載的鏡像.運(yùn)行的程序.創(chuàng)建時間、目前所處的狀態(tài)、端口映射.容器名稱等。其中狀態(tài)-欄為Created表示當(dāng)前的容器是新創(chuàng)建的并處于停止?fàn)顟B(tài)。
[root@localhost /]# docker start e392026ddd18 \\啟動容器 ,上面的ID e392026ddd18
容器啟動后,可以看到容器狀態(tài)一欄已經(jīng)變?yōu)閁P,表示容器已經(jīng)處于啟動狀態(tài)。
(2)容器的運(yùn)行與終止
[root@localhost /]# docker stop 容器的ID號
(3)容器的進(jìn)入
[root@localhost /]# docker exec -it e392026ddd18 /bin/bash root@e392026ddd18:/#
用戶可以通過所創(chuàng)建的終端來輸入命令,通過exit命令退出容器.
root@e392026ddd18:/# ls bin core entrypoint.sh home lib64 mnt proc run srv tmp var boot dev etc lib media opt root sbin sys usr root@e392026ddd18:/# exit exit
(4)容器的導(dǎo)出導(dǎo)入
容器是最小化,導(dǎo)致一些命令不能使用,所以就要從容器里面導(dǎo)出到本地來設(shè)置,設(shè)置完再導(dǎo)入進(jìn)容器就可以。
導(dǎo)出命令如下:
[root@localhost /]# docker export e392026ddd18>/etc/dhcp/dhcpd.conf
亂數(shù)字為容器的ID號
把dhcp主配置文件導(dǎo)出來配置,
導(dǎo)入命令如下:
[root@localhost /]# docker import /etc/dhcp/dhcpd.conf > e392026ddd18
(5)容器的刪除
可以使用dockerrm命令將一個已經(jīng)終止?fàn)顟B(tài)的容器進(jìn)行刪除。
一個鏡像可以包含多個容器
[root@localhost /]# docker stop e392026ddd18 \\先停止 e392026ddd18 [root@localhost /]# docker rm e392026ddd18 \\再刪除 e392026ddd18 [root@localhost /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
五.Docker資源控制
Cgroup是Controlgroup的簡寫,是Linux內(nèi)核提供的一種限制所使用物理資源的機(jī)制,這些資源主要包括CPU.內(nèi)存、blkio。 下面就這3個方面來談一下Docker是如何使用Cgroup機(jī)制進(jìn)行管理的。
(1)限制CPU使用速率
例如,將容器60ff4594cc73的CPU使用設(shè)置為20000,設(shè)置CPU的使用率限定為20%:
[root@localhost ~]# echo 20000 >/sys/fs/ cgroup/ cpu/ system. slice/docker-60ff4594cc73b5474477 636b25b41f 16e1 66a3606aed22 6522d420d0c296990d. scope/cpu . cfs_ quota _us
(2)多任務(wù)按比例分享CPU
例如,運(yùn)行3個新建容器A. B、C,占用CPU資源的比例為1:1:2就可以這樣執(zhí)行:
[root@localhost /]# docker run -tid --cpu-shares 1024 +鏡像A [root@localhost /]# docker run -tid --cpu-shares 1024 +鏡像B [root@localhost /]# docker run -tid --cpu-shares 2048 +鏡像C
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Docker和虛擬機(jī)的區(qū)別有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。