認(rèn)識(shí)Docker 以及容器鏡像的基本操作

認(rèn)識(shí)Docker?

Docker是一個(gè)開(kāi)源的容器引擎,它基于LXC容器技術(shù),使用Go語(yǔ)言開(kāi)發(fā)。

源代碼托管在Github上,并遵從Apache2.0協(xié)議。

Docker采用C/S架構(gòu),其可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器。

Docker是開(kāi)發(fā),運(yùn)行和部署應(yīng)用程序的開(kāi)放管理平臺(tái).開(kāi)發(fā)人員能利用docker開(kāi)發(fā)和運(yùn)行應(yīng)用程序, 運(yùn)維人員能利用docker部署和管理應(yīng)用程序。

簡(jiǎn)單來(lái)說(shuō):Docker就是一種快速解決生產(chǎn)問(wèn)題的一種技術(shù)手段。

為什么使用Docker?

  • 跨環(huán)境一致性
  • 降低配置開(kāi)發(fā)環(huán)境、生產(chǎn)環(huán)境的復(fù)雜度和成本
  • 可移植性較強(qiáng)。可在多個(gè)平臺(tái)使用:比如:亞馬遜、谷歌、微軟等
  • 隔離性。能保證每個(gè)容器中的資源隔離性。
  • 實(shí)現(xiàn)程序的快速部署和分發(fā)

例如:
1,我在本地寫(xiě)代碼,可直接通過(guò)docker與同事進(jìn)行共享,實(shí)現(xiàn)協(xié)同工作。方便。
2,在服務(wù)器上刪除一些應(yīng)用程序是很難的,但是docker就不一樣了,不會(huì)產(chǎn)生依賴(lài)關(guān)系沖突。
3,在docker寫(xiě)完代碼后,可直接進(jìn)行自動(dòng)測(cè)試和手動(dòng)測(cè)試
4,如果在開(kāi)發(fā)環(huán)境中,發(fā)現(xiàn)錯(cuò)誤的話(huà),直接在開(kāi)發(fā)環(huán)境中修改,然后去測(cè)試環(huán)境中測(cè)試和驗(yàn)證
5,如果開(kāi)發(fā)完成之后,交付時(shí),直接交付docker就行了。

docker與虛擬機(jī)的區(qū)別?

相同點(diǎn):

  • docker與虛擬機(jī)一樣,都對(duì)物理硬件資源共享
  • 而且他們的生命周期基本=相似(創(chuàng)建、啟動(dòng)、暫停、關(guān)閉))
  • 他們都可以安裝自己的應(yīng)用,比如mysql,redis,nginx等
  • 同虛擬機(jī)一樣,創(chuàng)建完容器后,戶(hù)存在 var/lib/docker/containers

不同點(diǎn):

  • 虛擬機(jī)的創(chuàng)建、啟動(dòng)、關(guān)閉都是基于一個(gè)完整的操作系統(tǒng),一個(gè)虛擬機(jī)就是一個(gè)完整的操作系統(tǒng),而docker是直接運(yùn)行在宿主機(jī)上的,所以docker更像是一系列的進(jìn)程
  • 容器是輕量級(jí)的,虛擬機(jī)是重量級(jí)的,容器的創(chuàng)建、啟動(dòng)和關(guān)閉肯定都比虛擬機(jī)要執(zhí)行的效率快得多。
  • 這也就意味著,在給定的硬件上能運(yùn)行很多個(gè)容器,卻不能運(yùn)行太多的虛擬機(jī)。

相應(yīng)的,docker也有一些缺點(diǎn):依賴(lài)網(wǎng)絡(luò)、?依賴(lài)操作系統(tǒng)、銀行U盾等場(chǎng)景不能用


Docker基礎(chǔ)命令?

docker 安裝:
查看支持的docker版本
apt-cache madison docker-ce

安裝docker
apt-get install docker-ce -y

注:可以指定版本安裝docker:
apt-get install docker-ce=<VERSION> -y
啟動(dòng)docker
systemctl start docker
systemctl status docker

注意:
?ubuntu安裝完畢后,默認(rèn)就開(kāi)啟服務(wù)了
檢查docker是否安裝成功
sudo docker run hello-world

顯示: hello from Docker! 表示已經(jīng)安裝成功

提示:

提示1: 如果不想每次都輸入sudo, 執(zhí)行, sudo usermod -a -G docker $USER
提示2: 如果沒(méi)有鏡像,會(huì)去下載

啟動(dòng),停止docker服務(wù),監(jiān)測(cè)狀態(tài)

啟動(dòng)

sudo service docker start

停止

sudo service docker stop

重啟docker

sudo service docker restart

狀態(tài)檢查

sudo service docker status

容器的管理?

容器就類(lèi)似于我們運(yùn)行起來(lái)的一個(gè)操作系統(tǒng),而且這個(gè)操作系統(tǒng)啟動(dòng)了某些服務(wù)。

這里的容器指的是運(yùn)行起來(lái)的一個(gè)Docker鏡像

容器類(lèi)操作:

1,查看容器
最簡(jiǎn)單的命令
docker ps -a 

查看所有運(yùn)行的容器
docker container ls

查看運(yùn)行和停止的容器
docker container ls -all
2,查看nginx容器全部信息
docker inspect nginx
3,查看所有的容器編號(hào)
docker ps -q
docker ps -a -q
4,運(yùn)行,停止運(yùn)行容器、刪除容器
運(yùn)行容器
sudo docker container start 容器名或id

停止容器
docker container stop 容器名或id
docker container kill 容器名或id

刪除容器
sudo docker container rm 容器名或id
5,進(jìn)入創(chuàng)建的容器(myubuntu)
docker exec -it myubuntu /bin/bash
6 ,使用鏡像,創(chuàng)建交互式容器
docker run [option] --name=容器名稱(chēng) 鏡像 [傳入的命的命令]
例如:
docker run -it --name=myubuntu ubuntu 

解釋: 使用ubuntu鏡像創(chuàng)建交互式容器, 名字為myubuntu
退出容器: ctrl + d
7,通過(guò)nginx容器創(chuàng)建nginx:v1.0鏡像
docker commit -m 'add ifconfig' -a 'carry' nginx1 nginx:v1.0
8,守護(hù)進(jìn)程nginx
讓Docker容器在后臺(tái)以守護(hù)形式運(yùn)行。此時(shí)可以通過(guò)添加-d參數(shù)來(lái)實(shí)現(xiàn)
docker run -d nginx

鏡像類(lèi)管理:
Docker鏡像是什么?
它是一個(gè)只讀的文件,就類(lèi)似于我們安裝操作系統(tǒng)時(shí)候所需要的那個(gè)iso光盤(pán)鏡像,通過(guò)運(yùn)行這個(gè)鏡像來(lái)完成各種應(yīng)用的部署。這里的鏡像就是一個(gè)能被docker運(yùn)行起來(lái)的一個(gè)程序

鏡像操作:

1,查看所有docker鏡像
docker image ls
或者: docker images
2,查看所有docker歷史鏡像
docker history xxx
3,拉取云端鏡像 | 下載鏡像(pull)
docker image pull  xxx

搜索鏡像: docker image search xxx
4,鏡像備份 (tag 原鏡像 新鏡像)
 docker tag hello-world:latest hello-world:v2.0
5,刪除鏡像
docker rmi xxx
docker image rm 鏡像名或id
6,刪除未使用的鏡像(慎用)
docker image prune
7,導(dǎo)出鏡像(save -o)
docker save -o my_hello_world.tar hello-world:latest
8,導(dǎo)入鏡像(load -i 本地鏡像包)加載本地鏡像
docker load -i my_hello_world.tar

參考官方資料
Docker 官網(wǎng):http://www.docker.com
Github Docker 源碼:https://github.com/docker/docker

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容