Docker常用命令大全
點擊上方“程序員大白”,選擇“星標(biāo)”公眾號
重磅干貨,第一時間送達(dá)

導(dǎo)讀
?本文介紹內(nèi)容包括“容器生命周期管理命令”、“容器操作命令”、“容器rootfs命令”、“鏡像倉庫命令”、“本地鏡像管理命令”和“基礎(chǔ)版本信息命令”。
容器生命周期管理命令
run
創(chuàng)建一個新的容器。
#?使用docker鏡像nginx:latest以后臺模式啟動一個容器,并將容器命名為mynginx。??
docker?run?--name?mynginx?-d?nginx:latest??
??
#?使用鏡像 nginx:latest,以后臺模式啟動一個容器,將容器的 80?端口映射到主機(jī)的 80?端口,主機(jī)的目錄?/data 映射到容器的?/data。??
docker?run?-p?80:80?-v?/data:/data?-d?nginx:latest??
??
#?使用鏡像nginx:latest以交互模式啟動一個容器,在容器內(nèi)執(zhí)行/bin/bash命令。??
docker?run?-it?nginx:latest?/bin/bash??
start/stop/restart
docker start?: 啟動一個或多個已經(jīng)被停止的容器。 docker stop?: 停止一個運行中的容器。 docker restart?: 重啟容器。
#?啟動已被停止的容器mynginx??
docker?start?mynginx??
??
#?停止運行中的容器mynginx??
docker?stop?mynginx??
??
#?重啟容器mynginx??
docker?restart?mynginx??
kill
殺掉一個運行中的容器。可選參數(shù):
-s :?發(fā)送什么信號到容器,默認(rèn) KILL
#?根據(jù)容器名字殺掉容器??
docker?kill?tomcat7??
??
#?根據(jù)容器ID殺掉容器??
docker?kill?65d4a94f7a39??
rm
刪除一個或多個容器。
#?強(qiáng)制刪除容器 db01、db02:??
docker?rm?-f?db01?db02??
??
#?刪除容器 nginx01, 并刪除容器掛載的數(shù)據(jù)卷:??
docker?rm?-v?nginx01??
??
#?刪除所有已經(jīng)停止的容器:??
docker?rm?$(docker?ps?-a?-q)??
create
創(chuàng)建一個新的容器但不啟動它。
#?使用docker鏡像nginx:latest創(chuàng)建一個容器,并將容器命名為mynginx??
docker?create?--name?mynginx?nginx:latest?????
exec
在運行的容器中執(zhí)行命令。可選參數(shù):
-d :?分離模式: 在后臺運行 -i :?即使沒有附加也保持STDIN 打開 -t :?分配一個偽終端
#?在容器?mynginx?中以交互模式執(zhí)行容器內(nèi)?/root/nginx.sh?腳本??
docker?exec?-it?mynginx?/bin/sh?/root/nginx.sh??
??
#?在容器?mynginx?中開啟一個交互模式的終端??
docker?exec?-i?-t??mynginx?/bin/bash??
??
#?也可以通過 docker ps -a 命令查看已經(jīng)在運行的容器,然后使用容器 ID 進(jìn)入容器。??
docker?ps?-a???
docker?exec?-it?9df70f9a0714?/bin/bash??
pause/unpause
docker pause?:暫停容器中所有的進(jìn)程。 docker unpause?:恢復(fù)容器中所有的進(jìn)程。
#?暫停數(shù)據(jù)庫容器db01提供服務(wù)。??
docker?pause?db01??
??
#?恢復(fù)數(shù)據(jù)庫容器?db01?提供服務(wù)??
docker?unpause?db0??
容器操作命令
ps
列出容器。可選參數(shù):
-a :?顯示所有的容器,包括未運行的。 -f :?根據(jù)條件過濾顯示的內(nèi)容。 –format :?指定返回值的模板文件。 -l :?顯示最近創(chuàng)建的容器。 -n :?列出最近創(chuàng)建的n個容器。 –no-trunc :?不截斷輸出。 -q :?靜默模式,只顯示容器編號。 -s :?顯示總的文件大小。
#?列出所有在運行的容器信息。??
docker?ps??
??
#?列出最近創(chuàng)建的5個容器信息。??
docker?ps?-n?5??
??
#?列出所有創(chuàng)建的容器ID。??
docker?ps?-a?-q??
補(bǔ)充說明:
容器的7種狀態(tài):created(已創(chuàng)建)、restarting(重啟中)、running(運行中)、removing(遷移中)、paused(暫停)、exited(停止)、dead(死亡)。
inspect
獲取容器/鏡像的元數(shù)據(jù)。可選參數(shù):
-f :?指定返回值的模板文件。 -s :?顯示總的文件大小。 –type :?為指定類型返回JSON。
#?獲取鏡像mysql:5.7的元信息。??
docker?inspect?mysql:5.7??
??
#?獲取正在運行的容器mymysql的 IP。??
docker?inspect?--format='{{range?.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'?mymysql??
top
查看容器中運行的進(jìn)程信息,支持 ps 命令參數(shù)。
#?查看容器mymysql的進(jìn)程信息。??
docker?top?mymysql??
??
#?查看所有運行容器的進(jìn)程信息。??
for?i?in??`docker?ps?|grep?Up|awk?'{print?$1}'`;do?echo?\?&&docker?top?$i;?done??
events
獲取實時事件。參數(shù)說明:
-f :?根據(jù)條件過濾事件; –since :?從指定的時間戳后顯示所有事件; –until :?流水時間顯示到指定的時間為止;
#?顯示docker 2016年7月1日后的所有事件。??
docker?events??--since="1467302400"??
??
#?顯示docker 鏡像為mysql:5.6 2016年7月1日后的相關(guān)事件。??
docker?events?-f?"image"="mysql:5.6"?--since="1467302400"???
說明:如果指定的時間是到秒級的,需要將時間轉(zhuǎn)成時間戳。如果時間為日期的話,可以直接使用,如–since=“2016-07-01”。
logs
獲取容器的日志。參數(shù)說明:
-f :?跟蹤日志輸出 –since :?顯示某個開始時間的所有日志 -t :?顯示時間戳 –tail :?僅列出最新N條容器日志
#?跟蹤查看容器mynginx的日志輸出。??
docker?logs?-f?mynginx??
??
#?查看容器mynginx從2016年7月1日后的最新10條日志。??
docker?logs?--since="2016-07-01"?--tail=10?mynginx??
export
將文件系統(tǒng)作為一個tar歸檔文件導(dǎo)出到STDOUT。參數(shù)說明:
-o :?將輸入內(nèi)容寫到文件。
#?將id為a404c6c174a2的容器按日期保存為tar文件。??
docker?export?-o?mysql-`date?+%Y%m%d`.tar?a404c6c174a2??
??
ls?mysql-`date?+%Y%m%d`.tar??
port
列出指定的容器的端口映射。
#?查看容器mynginx的端口映射情況。??
docker?port?mymysql??
容器rootfs命令
commit
從容器創(chuàng)建一個新的鏡像。參數(shù)說明:
-a :?提交的鏡像作者; -c :?使用Dockerfile指令來創(chuàng)建鏡像; -m :?提交時的說明文字; -p :?在commit時,將容器暫停。
#?將容器a404c6c174a2 保存為新的鏡像,并添加提交人信息和說明信息。??
docker?commit?-a?"guodong"?-m?"my?db"?a404c6c174a2??mymysql:v1???
cp
用于容器與主機(jī)之間的數(shù)據(jù)拷貝。參數(shù)說明:
-L :?保持源目標(biāo)中的鏈接
#?將主機(jī)/www/runoob目錄拷貝到容器96f7f14e99ab的/www目錄下。??
docker?cp?/www/runoob?96f7f14e99ab:/www/??
??
#?將主機(jī)/www/runoob目錄拷貝到容器96f7f14e99ab中,目錄重命名為www。??
docker?cp?/www/runoob?96f7f14e99ab:/www??
??
#?將容器96f7f14e99ab的/www目錄拷貝到主機(jī)的/tmp目錄中。??
docker?cp??96f7f14e99ab:/www?/tmp/??
diff
檢查容器里文件結(jié)構(gòu)的更改。
#?查看容器mymysql的文件結(jié)構(gòu)更改。??
docker?diff?mymysql??
鏡像倉庫命令
login/logout
docker login :?登陸到一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認(rèn)為官方倉庫 Docker Hubdocker logout :?登出一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認(rèn)為官方倉庫 Docker Hub參數(shù)說明:
-u :?登陸的用戶名 -p :?登陸的密碼
#?登陸到Docker?Hub??
docker?login?-u?用戶名?-p?密碼??
??
#?登出Docker?Hub??
docker?logout??
pull
從鏡像倉庫中拉取或者更新指定鏡像。參數(shù)說明:
-a :?拉取所有 tagged 鏡像 –disable-content-trust :?忽略鏡像的校驗,默認(rèn)開啟
#?從Docker Hub下載java最新版鏡像。??
docker?pull?java??
??
#?從Docker Hub下載REPOSITORY為java的所有鏡像。??
docker?pull?-a?java??
push
將本地的鏡像上傳到鏡像倉庫,要先登陸到鏡像倉庫。參數(shù)說明:
–disable-content-trust :?忽略鏡像的校驗,默認(rèn)開啟
#?上傳本地鏡像myapache:v1到鏡像倉庫中。??
docker?push?myapache:v1??
search
從Docker Hub查找鏡像。參數(shù)說明:
–automated :?只列出 automated build類型的鏡像; –no-trunc :?顯示完整的鏡像描述; -f <過濾條件>:?列出指定條件的鏡像。
#?從?Docker?Hub?查找所有鏡像名包含?java,并且收藏數(shù)大于?10?的鏡像??
docker?search?-f?stars=10?java??
??
NAME??????????????????DESCRIPTION???????????????????????????STARS???OFFICIAL???AUTOMATED??
java??????????????????Java?is?a?concurrent,?class-based...???1037????[OK]?????????
anapsix/alpine-java???Oracle?Java?8?(and?7)?with?GLIBC?...???115????????????????[OK]??
develar/java?????????????????????????????????????????????????46?????????????????[OK]??
每列參數(shù)說明:
NAME:?鏡像倉庫源的名稱 DESCRIPTION:?鏡像的描述 OFFICIAL:?是否 docker 官方發(fā)布 stars:?類似 Github 里面的 star,表示點贊、喜歡的意思 AUTOMATED:?自動構(gòu)建
本地鏡像管理命令
images
列出本地鏡像。參數(shù)說明:
-a :?列出本地所有的鏡像(含中間映像層,默認(rèn)情況下,過濾掉中間映像層); –digests :?顯示鏡像的摘要信息; -f :?顯示滿足條件的鏡像; –format :?指定返回值的模板文件; –no-trunc :?顯示完整的鏡像信息; -q :?只顯示鏡像ID。
#?查看本地鏡像列表。??
docker?images??
??
#?列出本地鏡像中REPOSITORY為ubuntu的鏡像列表。??
docker?images??ubuntu??
rmi
刪除本地一個或多個鏡像。參數(shù)說明:
-f :?強(qiáng)制刪除; –no-prune :?不移除該鏡像的過程鏡像,默認(rèn)移除;
#?強(qiáng)制刪除本地鏡像 guodong/ubuntu:v4。??
docker?rmi?-f?guodong/ubuntu:v4??
tag
標(biāo)記本地鏡像,將其歸入某一倉庫。
#?將鏡像ubuntu:15.10標(biāo)記為 runoob/ubuntu:v3 鏡像。??
docker?tag?ubuntu:15.10?runoob/ubuntu:v3??
build
用于使用 Dockerfile 創(chuàng)建鏡像。參數(shù)說明:
–build-arg=[] :?設(shè)置鏡像創(chuàng)建時的變量; –cpu-shares :?設(shè)置 cpu 使用權(quán)重; –cpu-period :?限制 CPU CFS周期; –cpu-quota :?限制 CPU CFS配額; –cpuset-cpus :?指定使用的CPU id; –cpuset-mems :?指定使用的內(nèi)存 id; –disable-content-trust :?忽略校驗,默認(rèn)開啟; -f :?指定要使用的Dockerfile路徑; –force-rm :?設(shè)置鏡像過程中刪除中間容器; –isolation :?使用容器隔離技術(shù); –label=[] :?設(shè)置鏡像使用的元數(shù)據(jù); -m :?設(shè)置內(nèi)存最大值; –memory-swap :?設(shè)置Swap的最大值為內(nèi)存+swap,"-1"表示不限swap; –no-cache :?創(chuàng)建鏡像的過程不使用緩存; –pull :?嘗試去更新鏡像的新版本; –quiet, -q :?安靜模式,成功后只輸出鏡像 ID; –rm :?設(shè)置鏡像成功后刪除中間容器; –shm-size :?設(shè)置/dev/shm的大小,默認(rèn)值是64M; –ulimit :?Ulimit配置。 –squash :?將 Dockerfile 中所有的操作壓縮為一層。 –tag, -t:?鏡像的名字及標(biāo)簽,通常 name:tag 或者 name 格式;可以在一次構(gòu)建中為一個鏡像設(shè)置多個標(biāo)簽。 –network:?默認(rèn) default。在構(gòu)建期間設(shè)置RUN指令的網(wǎng)絡(luò)模式
#?使用當(dāng)前目錄的?Dockerfile?創(chuàng)建鏡像,標(biāo)簽為?runoob/ubuntu:v1??
docker?build?-t?runoob/ubuntu:v1?.???
??
#?使用URL?github.com/creack/docker-firefox?的?Dockerfile?創(chuàng)建鏡像??
docker?build?github.com/creack/docker-firefox??
??
#?通過?-f?Dockerfile文件的位置?創(chuàng)建鏡像??
docker?build?-f?/path/to/a/Dockerfile?.??
history
查看指定鏡像的創(chuàng)建歷史。參數(shù)說明:
-H :?以可讀的格式打印鏡像大小和日期,默認(rèn)為true; –no-trunc :?顯示完整的提交記錄; -q :?僅列出提交記錄ID。
#?查看本地鏡像 guodong/ubuntu:v3 的創(chuàng)建歷史。??
docker?history?guodong/ubuntu:v3??
save
將指定鏡像保存成 tar 歸檔文件。參數(shù)說明:
-o :?輸出到的文件。
#?將鏡像?runoob/ubuntu:v3?生成?my_ubuntu_v3.tar?文檔??
docker?save?-o?my_ubuntu_v3.tar?runoob/ubuntu:v3??
load
導(dǎo)入使用?docker save?命令導(dǎo)出的鏡像。參數(shù)說明:
–input , -i :?指定導(dǎo)入的文件,代替 STDIN。 –quiet , -q :?精簡輸出信息。
#?導(dǎo)入鏡像??
docker?load?--input?fedora.tar??
import
從歸檔文件中創(chuàng)建鏡像。參數(shù)說明:
-c :?應(yīng)用docker 指令創(chuàng)建鏡像; -m :?提交時的說明文字;
#?從鏡像歸檔文件my_ubuntu_v3.tar創(chuàng)建鏡像,命名為runoob/ubuntu:v4??
docker?import??my_ubuntu_v3.tar?runoob/ubuntu:v4????
基礎(chǔ)版本信息命令
info
顯示 Docker 系統(tǒng)信息,包括鏡像和容器數(shù)。
#?查看docker系統(tǒng)信息。??
docker?info??
version
顯示 Docker 版本信息。
docker?version??
推薦閱讀
關(guān)于程序員大白
程序員大白是一群哈工大,東北大學(xué),西湖大學(xué)和上海交通大學(xué)的碩士博士運營維護(hù)的號,大家樂于分享高質(zhì)量文章,喜歡總結(jié)知識,歡迎關(guān)注[程序員大白],大家一起學(xué)習(xí)進(jìn)步!

