一文詳解Docker輕量級虛擬化,鏡像和容器
什么是虛擬化技術(shù)?
對于一個服務(wù)器來說,大多數(shù)時候資源都是閑置狀態(tài),并沒有得到充分利用。所以,對于一些初創(chuàng)公司來說,還沒有穩(wěn)定業(yè)務(wù),就自建機房,配置大量服務(wù)器,還有高昂的運維成本。
因此,現(xiàn)在大多數(shù)公司在初期都將業(yè)務(wù)放到云端,需要多少資源,就租用相應(yīng)規(guī)模的服務(wù)器。云服務(wù)提供商會將服務(wù)器劃分成多份,并且相互隔離,這就是虛擬化技術(shù)。
比如,剛畢業(yè)的學生,開始工資不高,不僅無法買房,也租不起大的房子,很多選擇合租。房東將整個房子劃分成幾個單間,分別出租,這也類似于虛擬化的原理。
什么是Docker?
Docker是一個開源的容器引擎,它基于LXC容器技術(shù),使用Go語言開發(fā)。
源代碼托管在Github上,并遵從Apache2.0協(xié)議。
Docker采用C/S架構(gòu),其可以輕松的為任何應(yīng)用創(chuàng)建一個輕量級的、可移植的、自給自足的容器。
簡單來說:Docker就是一種快速解決生產(chǎn)問題的一種技術(shù)手段。
Docker是容器的一種,而容器不僅僅是Docker。
早期的虛擬化比如VMWare虛擬機,一個虛擬機可以同時運行多個操作系統(tǒng)。但是,每個虛擬機都要虛擬化單獨的硬件資源,這樣,就會消耗更多的資源,主服務(wù)器可以虛擬化出的獨立空間就越小。
而容器技術(shù)最顯著的特點是所有容器都可以共有主服務(wù)器的硬件資源,這樣就使得容器更加輕量化,啟動速度也更快。但是Docker只能支持Linux系統(tǒng),所有容器都共用一個Linux內(nèi)核。
容器:顧名思義,就是可以裝物品的東西。每個容器可以按照我們的需求裝物品,不同容器間相互隔離,攜帶方便。比如,一家人外出旅行,每個人都在自己的旅行包裝上自己需要的生活物品。
或者說生活中很痛苦的事情就是電腦系統(tǒng)重裝,要重復配置各種軟件,但是只要提前制作一個系統(tǒng)盤,把常用的軟件提前安裝好,重裝系統(tǒng)后自動包括所有的軟件。
在云平臺上,容器裝載的物品就是不同應(yīng)用。比如,公司在A云平臺部署了自己的項目,現(xiàn)在發(fā)現(xiàn)B云平臺價格更加優(yōu)惠,性能也更好,直接將A云平臺容器打包切換到B云平臺,而不需要重復配置環(huán)境,安裝軟件。
ubuntu安裝Docker
注冊Docker賬號
docker官網(wǎng):
doker加速器:在國內(nèi)使用docker的官方鏡像源,會因為網(wǎng)絡(luò)的原因,造成無法下載,或者一直處于超時,所以我們使用 daocloud 的方法進行加速配置。
查看國內(nèi)源:
Docker鏡像
Docker鏡像是一個只讀的文件,就類似于我們安裝操作系統(tǒng)時候所需要的那個iso光盤鏡像,通過運行這個鏡像來完成各種應(yīng)用的部署。
通過 docker search ubuntu 查找鏡像:
如果獲取鏡像具體版本可以官網(wǎng)上搜索Ubuntu,點擊Tags,在后面搜索版本號:
刪除鏡像:
鏡像資源改名操作:docker tag ubuntu:20.04 myubuntu:1.0
該操作會保留原有鏡像,不需要可以自行刪除。
壓縮鏡像,以后用到直接解壓:docker save -o ubuntu.tar ubuntu
導入ubuntu.tar壓縮包:docker load -i ubuntu.tar
查看指定鏡像歷史:docker image history ubuntu:20.04
容器命令
利用ubuntu20.04鏡像創(chuàng)建一個名為myrq的容器,并進入容器,執(zhí)行/bin/bash:
exit退出容器:
利用鏡像ubuntu:20.04創(chuàng)建一個容器:docker create -it ubuntu:20.04
啟動容器:docker start 容器
停止容器:docker stop 容器
重啟容器:docker restart 容器
列出本地所有容器:docker ps -a
創(chuàng)建并啟動一個容器:docker run -itd ubuntu:20.04
進入容器:docker attach 容器
掛起容器:先按Ctrl-p,再按Ctrl-q
在容器中執(zhí)行命令:docker exec 容器 命令
刪除容器(先關(guān)閉容器):docker rm 容器
將容器CONTAINER導出到本地文件xxx.tar中:docker export -o xxx.tar 容器
將本地文件xxx.tar導入成鏡像,并將鏡像命名為image_name:tag:docker import xxx.tar image_name:tag
通過容器生成的鏡像創(chuàng)建容器:run -it --name myrq4 ubuntu:1.0 /bin/bash
查看所有容器的統(tǒng)計信息,包括CPU、內(nèi)存、存儲、網(wǎng)絡(luò)等信息:docker stats
在本地和容器間復制文件:docker cp xxx CONTAINER:xxx 或 docker cp CONTAINER:xxx xxx
重命名容器:docker rename CONTAINER1 CONTAINER2
刪除所有已停止容器:docker container prune
批量刪除所有容器,先用命令列出所有容器id并賦值給變量a:
強制刪除所有容器: