開發(fā)者必備丨Docker客戶端常用命令分享

原創(chuàng) 2020-03-13 13:24:00 Docker 命令

學(xué)習(xí)Docker,首先需要了解Docker基本概念,我們在以前的文章中介紹過docker的基本原理和部署操作系統(tǒng)。

今天講下嵌入式開發(fā)中docker客戶端常用的命令,開始進(jìn)入“動手”階段(也就是敲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 :注冊或登錄到一個(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 的注冊服務(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 所啟動的應(yīng)用服務(wù),包括創(chuàng)建、更新、刪除等;

start :啟動一個(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命令分布圖

Docker客戶端常用命令分享

常用操作及命令

常用鏡像操作

列出鏡像

docker images

刪除鏡像

docker rmi [-f] <IMAGE ID>或docker image rm [-f] <IMAGE ID>

其中-f代表強(qiáng)制刪除,用在多個(gè)容器對應(yīng)一個(gè)鏡像時(shí)

給一個(gè)鏡像打標(biāo)簽

docker tag

常用容器操作

列出主機(jī)上的容器

docker container ls [-a]

以某鏡像為基礎(chǔ)啟動并運(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表示容器啟動會進(jìn)入后臺運(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后臺必須運(yùn)行一個(gè)進(jìn)程,否則容器就會退出。

重命名容器

docker rename old_name new_name進(jìn)入后臺的容器(用此方法進(jìn)入后,執(zhí)行exit時(shí)不會導(dǎo)致容器的停止,還有個(gè)命令attach也可以進(jìn)入后臺容器,但是exit會導(dǎo)致容器停止)

docker exec -it container_name bin/bash

終止容器

docker container stop

重新啟動終止?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

查看容器對應(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)建、是否自動創(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)入文件為本地鏡像,會丟失歷史和元數(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.加載鏡像到容器,并啟動容器

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ù)支持和分享中獲得更多的知識。

相關(guān)產(chǎn)品 >

  • FETMX6Q-C核心板

    i.MX6Q核心板板層出不窮,要如何選擇?飛凌解讀i.mx6Q芯片強(qiáng)性能為您推薦四核A9架構(gòu)的i.MX6Q產(chǎn)品精選,包含iMX6Q 核心板、i.MX6Q 核心板、iMX6Q工業(yè)級核心板,歡迎采購。  i.MX6Q核心板基于NXP(原Freescale)Cortex-A9架構(gòu)的i.MX6Q四核處理器設(shè)計(jì),核心板小尺寸核心板搭配獨(dú)特的薄款連接器,讓設(shè)計(jì)隨心所欲!

    了解詳情
    FETMX6Q-C核心板
  • FETA40i-C核心板

    Allwinner A40i是全志開發(fā)的一款工業(yè)級處理器,A40i作為全國產(chǎn)工業(yè)級芯片中的佼佼者,采用更低功耗的4核ARM Cortex-A7架構(gòu),工作溫度-40-85℃,是一款高性能低功耗超高性能CPU主芯片。飛凌嵌入式深度研究全志A40i芯片參數(shù)、原理圖、datasheet規(guī)格書推出了以FETA40i核心板為主的一系列全國產(chǎn)工業(yè)級嵌入式計(jì)算機(jī)板卡,并提供了用于評估的A40i工控板、 A40i開發(fā)板。 了解詳情
    FETA40i-C核心板
  • FETT507-C核心板

    推薦T507,全志T507核心板采用工業(yè)級處理器設(shè)計(jì)開發(fā),提供T507規(guī)格書,T507各類設(shè)計(jì)資料。FETT507-C核心板集成全志T507四核工業(yè)級處理器設(shè)計(jì)開發(fā),Cortex-A53架構(gòu),主頻1.5GHz,集成G31 GPU,內(nèi)存2GB DDR3L,存儲8GB eMMC。整板工業(yè)級運(yùn)行溫寬,支持絕大部分當(dāng)前流行的視頻及圖片格式解碼,具有穩(wěn)定可靠的工業(yè)級產(chǎn)品性能、低功耗以及豐富的用戶接口等優(yōu)勢,搭載Linux、Android、Ubuntu*操作系統(tǒng),適用于車載電子、電力、醫(yī)療、工業(yè)控制、物聯(lián)網(wǎng)、智能終端等領(lǐng)域 了解詳情
    FETT507-C核心板
  • 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í)和視覺、高級多媒體以及具有高可靠性的工業(yè)自動化。它旨在滿足智慧家庭、樓宇、城市和工業(yè)4.0應(yīng)用的需求。飛凌iMX8MP核心板提供用戶手冊,iMX8MP原理圖,引腳定義等。
    了解詳情
    FETMX8MP-C核心板

推薦閱讀 換一批 換一批