1、Docker與虛擬機(jī)的優(yōu)缺點(diǎn)

2、Docker基本架構(gòu)
Docker是一個(gè)構(gòu)建、發(fā)布、運(yùn)行分布式應(yīng)用的平臺(tái),包括三大核心概念:
鏡像(Image)
Docker鏡像(Image)類似于虛擬機(jī)鏡像,可以將它理解為一個(gè)面向Docker引擎的只讀模板,包含了文件系統(tǒng)。例如:一個(gè)鏡像可以只包含一個(gè)完整的Ubuntu操作系統(tǒng)環(huán)境,可以把它稱為一個(gè)Ubuntu鏡像。鏡像是創(chuàng)建Docker容器的基礎(chǔ)。
容器(Container)
Docker利用容器來運(yùn)行和隔離應(yīng)用。容器是從鏡像創(chuàng)建的應(yīng)用運(yùn)行實(shí)例,可以將其啟動(dòng)、開始、停止、刪除,而這些容器都是相互隔離、互不可見的。鏡像自身是只讀的。容器從鏡像啟動(dòng)的時(shí)候,Docker會(huì)在鏡像的最上層創(chuàng)建一個(gè)可寫層,鏡像本身保持不變。
倉(cāng)庫(kù)(Repository)
Docker倉(cāng)庫(kù)(Repository)類似于代碼倉(cāng)庫(kù),是Docker集中存放鏡像文件的場(chǎng)所。
3、Docker基本操作
1、docker attach 進(jìn)入容器,Docker自帶命令,可以查看容器內(nèi)部的持續(xù)輸出 ?
2、docker build命令:構(gòu)建鏡像用的命令,參數(shù):
-c:控制cpu使用
-f::選擇Dockerfile名稱
-m:設(shè)置構(gòu)建內(nèi)存上限
-q:不顯示構(gòu)建過程的一些信息
-t:為構(gòu)建的鏡像打上標(biāo)簽
3、docker commit命令:把當(dāng)前容器提交打包為鏡像,但一般情況下,更加推薦使用Dockerfile構(gòu)建鏡像。參數(shù):
-a:添加作者信息,方便維護(hù)。
-c:修改Dockerfile指令,目前支持的指令有(CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDUR)
-m:類似git commit -m這樣,提交修改信息。
-p:暫停正在commit的操作。
4、docker cp命令:復(fù)制文件到宿主機(jī),用于在宿主機(jī)和容器之間移動(dòng)復(fù)制文件。
? ?docker cp <containerId>:/file/path/within/container /host/path/target?
? ?例:docker cp ubuntu:/home/c_test.txt ? ~/c_test.txt
5、docker create命令:創(chuàng)建容器
sudo docker create -it ubuntu:latest
docker create命令新建的容器處于停止?fàn)顟B(tài),可以使用 docker start命令來 ? ? ? ? ? ? ? ??啟動(dòng)它。docker start contaninerID (docker start ?b79222953c82)
6、docker diff 命令:查看容器的變化。docker diff contaninerID?
7、docker events 命令:實(shí)時(shí)輸出Docker服務(wù)器端的事件,包括容器的創(chuàng)建、啟動(dòng)、關(guān)閉。使用說明:
docker events -f container=<name or id>
8、docker exec 命令:進(jìn)入容器的命令。參數(shù):
-d 分離模式:在后臺(tái)運(yùn)行的命令
-i 交互模式.
-t 分配一個(gè)TTY
-u 制定用戶和用戶組。
例:docker exec -it ubuntu bash
使用exec進(jìn)入容器內(nèi)部如同進(jìn)入一臺(tái)機(jī)器一樣,且可以使用exit退出。
9、docker export導(dǎo)出容器,導(dǎo)出本地儲(chǔ)存的容器
docker export -o containerName.tar contianerName?
docker export containerName > containerName.tar
查看所有容器:
sudo docker ps -a
導(dǎo)出容器:
sudo docker export b79222953c82 > test_ubuntu
10、docker history 查看鏡像歷史。(例:docker history hello-world)
11、docker images 查看本地鏡像。
-a:顯示所有鏡像,包括中間鏡像。
-f:過濾顯示。
-q:只顯示ID。
12、docker import 導(dǎo)入鏡像。
docker import /path/to/exampleContainer.tgz
13、docker info命令,查看Docker信息。
14、docker inspect命令,查看各項(xiàng)詳細(xì)信息。
? ?docker inspect 2cb0d9787c4d(IMAGEID)
15、docker kill命令 殺死容器
16、docker stop命令 停止容器?docker stop b79222953c82(CONTAINERID)
stop和kill的區(qū)別在于docker stop命令給容器中的進(jìn)程發(fā)送SIGTERM信號(hào),默認(rèn)行為是會(huì)導(dǎo)致容器退出。
17、docker start命令,啟動(dòng)容器。docker start b79222953c82(CONTAINERID)
18、docker load命令,導(dǎo)入鏡像;docker load命令的作用是導(dǎo)入使用docker save導(dǎo)出的鏡像。
docker load < hello-world.tar
19、docker save命令,導(dǎo)出鏡像,后面可以接多個(gè)鏡像名稱。
?docker save -o hello-world.tar hello-world
20、docker login命令。登錄到Registry,Registry是Docker公司提供的鏡像倉(cāng)庫(kù)。
21、docker logout命令。使用該命令登出倉(cāng)庫(kù)。
22、docker logs命令。顯示容器日志。
docker logs b79222953c82(CONTAINERID)
23、docker network命令,管理網(wǎng)絡(luò)。
24、docker node命令 管理節(jié)點(diǎn)。
25、docker pause命令,暫停容器。docker pause b79222953c82(CONTAINERID)
26、docker port命令,查看容器端口
27、docker ps 命令,查看本地容器信息
-a:顯示全部容器,包括各種狀態(tài)的容器,只要存在就顯示。
-f:添加過濾條件。
-n:顯示最近創(chuàng)建的幾個(gè)容器
-l:顯示最近創(chuàng)建的一個(gè)
-q:只顯示ID
-s:顯示容器大小
28、docker pull命令 拉取鏡像。docker pull -a 會(huì)把所有標(biāo)簽拉取到本地。
docker pull ubuntu
29、docker push命令,把本地的鏡像推送到鏡像倉(cāng)庫(kù)。
30、docker rename命令,重命名容器,在不改變?nèi)萜鳡顟B(tài)的情況下重命名容器。
31、 docker restart命令,重啟容器(不是重啟Docker ,重啟Docker可以使用systemctl restart docker命令或者service docker restart命令重啟Docker)。
docker restart<Container1><Container2>命令可以重啟多個(gè)容器。
32、docker rm命令:刪除容器的命令,直接使用docker rm <Container Name/Container ID>
-f ?--force=false 強(qiáng)行終止并刪除一個(gè)運(yùn)行中的容器。
-l --link=false 刪除容器的連接,但保留容器。
-v --volumes=false 刪除容器掛載的數(shù)據(jù)卷。
33、docker rmi命令:刪除鏡像的命令,刪除鏡像時(shí),要確保沒有容器在使用該鏡像,也就沒有容器是使用該鏡像啟動(dòng)的,才可以刪除,否則會(huì)抱錯(cuò)。
34、docker run命令:運(yùn)行容器的命令,運(yùn)行命令會(huì)啟動(dòng)一個(gè)容器進(jìn)程,并為這個(gè)進(jìn)程分配器獨(dú)占的文件系統(tǒng)、網(wǎng)絡(luò)資源和以此進(jìn)程為根基的進(jìn)程組。