開發(fā)者必備丨Docker客戶端常用命令分享
學(xué)習(xí)Docker,首先需要了解Docker基本概念,我們?cè)谝郧暗奈恼轮薪榻B過docker的基本原理和部署操作系統(tǒng)。
今天講下嵌入式開發(fā)中docker客戶端常用的命令,開始進(jìn)入“動(dòng)手”階段(也就是敲Docker命令)。Docker命令較多,這里筆者總結(jié)下常用的Docker命令,方便小伙伴們查閱。
客戶端常用命令列表
以下為Docker 客戶端常用命令列表,可以通過docker COMMAND --help來查看這些命令的具體用法。
attach:依附到一個(gè)正在運(yùn)行的容器中;
build :從一個(gè)Dockerfile創(chuàng)建一個(gè)鏡像;
commit:從一個(gè)容器的修改中創(chuàng)建一個(gè)新的鏡像;
cp:在容器和本地宿主系統(tǒng)之間復(fù)制文件中;
create:創(chuàng)建一個(gè)新容器,但并不運(yùn)行它;
diff:檢查一個(gè)容器內(nèi)文件系統(tǒng)的修改,包括修改和增加;
events:從服務(wù)端獲取實(shí)時(shí)的事件;
exec :在運(yùn)行的容器內(nèi)執(zhí)行命令;
export:導(dǎo)出容器內(nèi)容為一個(gè)tar包;
history:顯示一個(gè)鏡像的歷史信息;
images:列出存在的鏡像;
import:導(dǎo)入一個(gè)文件(典型為tar包)路徑或目錄來創(chuàng)建一個(gè)本地鏡像;
info:顯示一些相關(guān)的系統(tǒng)信息;
inspect:顯示一個(gè)容器的具體配置信息;
kill:關(guān)閉一個(gè)運(yùn)行中的容器 (包括進(jìn)程和所有相關(guān)資源);
load :從一個(gè)tar包中加載一個(gè)鏡像;
login :注冊(cè)或登錄到一個(gè)Docker的倉庫服務(wù)器;
logout :從Docker的倉庫服務(wù)器登出;
logs:獲取容器的log信息;
network:管理 Docker 的網(wǎng)絡(luò),包括查看、創(chuàng)建、刪除、掛載、卸載等;
node:管理 swarm 集群中的節(jié)點(diǎn),包括查看、更新、刪除、提升/取消管理節(jié)點(diǎn)等;
pause:暫停一個(gè)容器中的所有進(jìn)程;
port :查找一個(gè) nat 到一個(gè)私有網(wǎng)口的公共口;
ps :列出主機(jī)上的容器;
pull :從一個(gè)Docker的倉庫服務(wù)器下拉一個(gè)鏡像或倉庫;
push :將一個(gè)鏡像或者倉庫推送到一個(gè) Docker 的注冊(cè)服務(wù)器;
rename:重命名一個(gè)容器;
restart:重啟一個(gè)運(yùn)行中的容器;
rm :刪除給定的若干個(gè)容器;
rmi :刪除給定的若干個(gè)鏡像;
run :創(chuàng)建一個(gè)新容器,并在其中運(yùn)行給定命令;
save :保存一個(gè)鏡像為 tar 包文件;
search:在 Docker index 中搜索一個(gè)鏡像;
service:管理 Docker 所啟動(dòng)的應(yīng)用服務(wù),包括創(chuàng)建、更新、刪除等;
start :啟動(dòng)一個(gè)容器;
stats :輸出(一個(gè)或多個(gè))容器的資源使用統(tǒng)計(jì)信息;
stop :終止一個(gè)運(yùn)行中的容器;
swarm:管理 Docker swarm 集群,包括創(chuàng)建、加入、退出、更新等;
tag:為一個(gè)鏡像打標(biāo)簽;
top:查看一個(gè)容器中的正在運(yùn)行的進(jìn)程信息;
unpause:將一個(gè)容器內(nèi)所有的進(jìn)程從暫停狀態(tài)中恢復(fù);
update:更新指定的若干容器的配置信息;
version:輸出 Docker 的版本信息;
volume:管理 Docker volume,包括查看、創(chuàng)建、刪除等;
wait :阻塞直到一個(gè)容器終止,然后輸出它的退出符。
兩張圖總結(jié)Docker的命令
Container事件狀態(tài)圖
Docker命令分布圖
常用操作及命令
常用鏡像操作
列出鏡像
docker images
刪除鏡像
docker rmi [-f] <IMAGE ID>或docker image rm [-f] <IMAGE ID>
其中-f代表強(qiáng)制刪除,用在多個(gè)容器對(duì)應(yīng)一個(gè)鏡像時(shí)
給一個(gè)鏡像打標(biāo)簽
docker tag
常用容器操作
列出主機(jī)上的容器
docker container ls [-a]
以某鏡像為基礎(chǔ)啟動(dòng)并運(yùn)行容器
docker run -itd --privileged=true --cap-add=SYS_ADMIN --mount type=bind,src=/data/home,target=/root/workspace -p 30000:22 <IMAGE ID> bin/bash
參數(shù)說明:
-i表示交互式,讓容器的標(biāo)準(zhǔn)輸入保持打開
-t表示讓docker分配一個(gè)偽終端并綁定到容器的標(biāo)準(zhǔn)輸入上
-d表示容器啟動(dòng)會(huì)進(jìn)入后臺(tái)運(yùn)行
--privileged=true表示允許容器中運(yùn)行一些特權(quán)命令
--cap-add=SYS_ADMIN表示提供給容器更大的管理權(quán)限
-v表示綁定掛載目錄
-p表示指定主機(jī)端口和容器內(nèi)部端口映射關(guān)系
bin/bash表示因?yàn)閐ocker后臺(tái)必須運(yùn)行一個(gè)進(jìn)程,否則容器就會(huì)退出。
重命名容器
docker rename old_name new_name進(jìn)入后臺(tái)的容器(用此方法進(jìn)入后,執(zhí)行exit時(shí)不會(huì)導(dǎo)致容器的停止,還有個(gè)命令attach也可以進(jìn)入后臺(tái)容器,但是exit會(huì)導(dǎo)致容器停止)
docker exec -it container_name bin/bash
終止容器
docker container stop
重新啟動(dòng)終止?fàn)顟B(tài)的容器
docker container start
終止一個(gè)運(yùn)行態(tài)的容器然后重啟
docker container restart
刪除終止態(tài)容器
docker container rm container_name
刪除運(yùn)行態(tài)容器
docker container rm -f container_name
清理所有終止態(tài)容器
docker container prune
查看容器的信息
docker inspect container_name
查看容器對(duì)應(yīng)的主機(jī)端口:
#docker port container_name或#docker port container_name <PORT_NUMBER>
基于一個(gè)新的基礎(chǔ)鏡像新建容器
1.查找官方倉庫中的鏡像
docker search ubuntu
可以看到返回了很多包含關(guān)鍵字的鏡像,其中包括鏡像名字、描述、收藏?cái)?shù)(表示該鏡像的受關(guān)注程度)、是否官方創(chuàng)建、是否自動(dòng)創(chuàng)建
2.下載鏡像到本地
docker pull ubuntu:18.04
3.查看下載的鏡像
docker images
4.加載鏡像到容器并運(yùn)行
docker run -itd --privileged=true --cap-add=SYS_ADMIN --mount type=bind,src=/data/home,target=/root/workspace -p 30000:22 <IMAGE ID> bin/bash
5.推送鏡像到遠(yuǎn)程倉庫
docker push
容器的保存及打開
容器導(dǎo)出文件再導(dǎo)入文件為本地鏡像,會(huì)丟失歷史和元數(shù)據(jù),無法回滾到以前的層,導(dǎo)出的包稍小。
1.先獲取容器id
docker container ls
2.導(dǎo)出容器內(nèi)容為一個(gè)tar包
docker export <CONTAINER ID> > /home/export.tar
3.導(dǎo)入一個(gè)文件(典型為tar包)路徑或目錄來創(chuàng)建一個(gè)本地鏡像,可以重新指定鏡像名字。
cat xxx.tar | docker import - new_name:new_tag
或:
從指定URL或某個(gè)目錄導(dǎo)入容器快照:
docker import http://example.com/exampleimage.tgz example/imagerepo
4.加載鏡像到容器,并啟動(dòng)容器
docker run
鏡像的保存及打開
鏡像導(dǎo)出文件再導(dǎo)入文件為本地鏡像,不丟失歷史和層,可以層回滾
1.查看鏡像id
docker images
2.導(dǎo)出鏡像內(nèi)容為一個(gè)tar包
docker save <IMAGE NAME> > /home/save.tar
3.從一個(gè)tar包中加載一個(gè)鏡像,不可以重新指定鏡像名字
docker load < /home/save.tar
4.查看導(dǎo)入的鏡像id
docker images
以上命令基本覆蓋了嵌入式開發(fā)中常用的docker命令,想了解更多可以查看:
Docker 官方主頁:https://www.docker.com
Docker 官方博客:https://blog.docker.com
Docker 官方文檔:https://docs.docker.com
希望大家看到有所收獲,指出問題共同進(jìn)步,在飛凌的技術(shù)支持和分享中獲得更多的知識(shí)。
相關(guān)產(chǎn)品 >
-
FETMX6Q-C核心板
i.MX6Q核心板板層出不窮,要如何選擇?飛凌解讀i.mx6Q芯片強(qiáng)性能為您推薦四核A9架構(gòu)的i.MX6Q產(chǎn)品精選,包含iMX6Q 核心板、i.MX6Q 核心板、iMX6Q工業(yè)級(jí)核心板,歡迎采購。 i.MX6Q核心板基于NXP(原Freescale)Cortex-A9架構(gòu)的i.MX6Q四核處理器設(shè)計(jì),核心板小尺寸核心板搭配獨(dú)特的薄款連接器,讓設(shè)計(jì)隨心所欲!
了解詳情 -
FETA40i-C核心板
Allwinner A40i是全志開發(fā)的一款工業(yè)級(jí)處理器,A40i作為全國產(chǎn)工業(yè)級(jí)芯片中的佼佼者,采用更低功耗的4核ARM Cortex-A7架構(gòu),工作溫度-40-85℃,是一款高性能低功耗超高性能CPU主芯片。飛凌嵌入式深度研究全志A40i芯片參數(shù)、原理圖、datasheet規(guī)格書推出了以FETA40i核心板為主的一系列全國產(chǎn)工業(yè)級(jí)嵌入式計(jì)算機(jī)板卡,并提供了用于評(píng)估的A40i工控板、 A40i開發(fā)板。 了解詳情 -
FETT507-C核心板
推薦T507,全志T507核心板采用工業(yè)級(jí)處理器設(shè)計(jì)開發(fā),提供T507規(guī)格書,T507各類設(shè)計(jì)資料。FETT507-C核心板集成全志T507四核工業(yè)級(jí)處理器設(shè)計(jì)開發(fā),Cortex-A53架構(gòu),主頻1.5GHz,集成G31 GPU,內(nèi)存2GB DDR3L,存儲(chǔ)8GB eMMC。整板工業(yè)級(jí)運(yùn)行溫寬,支持絕大部分當(dāng)前流行的視頻及圖片格式解碼,具有穩(wěn)定可靠的工業(yè)級(jí)產(chǎn)品性能、低功耗以及豐富的用戶接口等優(yōu)勢(shì),搭載Linux、Android、Ubuntu*操作系統(tǒng),適用于車載電子、電力、醫(yī)療、工業(yè)控制、物聯(lián)網(wǎng)、智能終端等領(lǐng)域 了解詳情 -
FETMX8MP-C核心板
iMX8MP核心板基于 NXP i.MX 8M Plus 處理器設(shè)計(jì), 采用4核Cortex-A53 和 Cortex-M7架構(gòu)。支持雙千兆網(wǎng)口,iMX8MP性能強(qiáng)勁最高運(yùn)行速率可達(dá)2.3TOPS,并且i.MX8MP功耗更低≤2W 。iMX 8M Plus系列專注于機(jī)器學(xué)習(xí)和視覺、高級(jí)多媒體以及具有高可靠性的工業(yè)自動(dòng)化。它旨在滿足智慧家庭、樓宇、城市和工業(yè)4.0應(yīng)用的需求。飛凌iMX8MP核心板提供用戶手冊(cè),iMX8MP原理圖,引腳定義等。
了解詳情