精華!Docker 常用命令大全

精華!Docker 常用命令大全

本文包括容器生命周期管理命令、容器操作命令、容器rootfs命令、鏡像倉庫命令、本地鏡像管理命令和基礎版本信息命令。

容器生命周期管理命令

run

創建一個新的容器。

#?使用docker鏡像nginx:latest以后臺模式啟動一個容器,#?并將容器命名為mynginx。??docker?run?--name?mynginx?-d?nginx:latest??#?使用鏡像?nginx:latest,以后臺模式啟動一個容器,#?將容器的?80?端口映射到主機的?80?端口,#?主機的目錄?/data?映射到容器的?/data。??docker?run?-p?80:80?-v?/data:/data?-d?nginx:latest??#?使用鏡像nginx:latest以交互模式啟動一個容器,#?在容器內執行/bin/bash命令。??docker?run?-it?nginx:latest?/bin/bash

start/stop/restart

  • docker start?: 啟動一個或多個已經被停止的容器。
  • docker stop?: 停止一個運行中的容器。
  • docker restart?: 重啟容器。
#?啟動已被停止的容器mynginx??docker?start?mynginx??#?停止運行中的容器mynginx??docker?stop?mynginx??#?重啟容器mynginx??docker?restart?mynginx

kill

殺掉一個運行中的容器。可選參數:

  • -s :?發送什么信號到容器,默認 KILL
#?根據容器名字殺掉容器??docker?kill?tomcat7??#?根據容器ID殺掉容器??docker?kill?65d4a94f7a39

rm

刪除一個或多個容器。

#?強制刪除容器?db01、db02:??docker?rm?-f?db01?db02??#?刪除容器?nginx01,?并刪除容器掛載的數據卷:??docker?rm?-v?nginx01??#?刪除所有已經停止的容器:??docker?rm?$(docker?ps?-a?-q)

create

創建一個新的容器但不啟動它。

#?使用docker鏡像nginx:latest創建一個容器,并將容器命名為mynginx??docker?create?--name?mynginx?nginx:latest

exec

在運行的容器中執行命令。可選參數:

  • -d :?分離模式: 在后臺運行
  • -i :?即使沒有附加也保持STDIN 打開
  • -t :?分配一個偽終端
#?在容器?mynginx?中以交互模式執行容器內?/root/nginx.sh?腳本??docker?exec?-it?mynginx?/bin/sh?/root/nginx.sh??#?在容器?mynginx?中開啟一個交互模式的終端??docker?exec?-i?-t??mynginx?/bin/bash??#?也可以通過?docker?ps?-a?命令查看已經在運行的容器,然后使用容器?ID?進入容器。??docker?ps?-a???docker?exec?-it?9df70f9a0714?/bin/bash

pause/unpause

  • docker pause?:暫停容器中所有的進程。
  • docker unpause?:恢復容器中所有的進程。
#?暫停數據庫容器db01提供服務。??docker?pause?db01??#?恢復數據庫容器?db01?提供服務??docker?unpause?db0

容器操作命令

ps

列出容器。可選參數:

  • -a :?顯示所有的容器,包括未運行的。
  • -f :?根據條件過濾顯示的內容。
  • format :?指定返回值的模板文件。
  • -l :?顯示最近創建的容器。
  • -n :?列出最近創建的n個容器。
  • –no-trunc :?不截斷輸出。
  • -q :?靜默模式,只顯示容器編號。
  • -s :?顯示總的文件大小。
#?列出所有在運行的容器信息。??docker?ps??#?列出最近創建的5個容器信息。??docker?ps?-n?5??#?列出所有創建的容器ID。??docker?ps?-a?-q

補充說明:

容器的7種狀態:created(已創建)、restarting(重啟中)、running(運行中)、removing(遷移中)、paused(暫停)、exited(停止)、dead(死亡)。

inspect

獲取容器/鏡像的元數據。可選參數:

  • -f :?指定返回值的模板文件。
  • -s :?顯示總的文件大小。
  • –type :?為指定類型返回json
#?獲取鏡像mysql:5.7的元信息。??docker?inspect?mysql:5.7??#?獲取正在運行的容器mymysql的?IP。??docker?inspect?--format='{{range?.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'?mymysql

top

查看容器中運行的進程信息,支持 ps 命令參數。

#?查看容器mymysql的進程信息。??docker?top?mymysql??#?查看所有運行容器的進程信息。??for?i?in??`docker?ps?|grep?Up|awk?'{print?$1}'`;do?echo??&&docker?top?$i;?done

events

獲取實時事件。參數說明:

  • -f :?根據條件過濾事件;
  • –since :?從指定的時間戳后顯示所有事件;
  • –until :?流水時間顯示到指定的時間為止;
#?顯示docker?2016年7月1日后的所有事件。??docker?events??--since="1467302400"??#?顯示docker?鏡像為mysql:5.6?2016年7月1日后的相關事件。??docker?events?-f?"image"="mysql:5.6"?--since="1467302400"

說明:如果指定的時間是到秒級的,需要將時間轉成時間戳。如果時間為日期的話,可以直接使用,如–since=“2016-07-01”。

logs

獲取容器的日志。參數說明:

  • -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

將文件系統作為一個tar歸檔文件導出到STDOUT。參數說明:

牛逼啊!接私活必備的?N?個開源項目!趕快收藏

  • -o :?將輸入內容寫到文件。
#?將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

從容器創建一個新的鏡像。參數說明:

  • -a :?提交的鏡像作者;
  • -c :?使用Dockerfile指令來創建鏡像;
  • -m :?提交時的說明文字;
  • -p :?在commit時,將容器暫停。
#?將容器a404c6c174a2?保存為新的鏡像,#?并添加提交人信息和說明信息。??docker?commit?-a?"guodong"?-m?"my?db"?a404c6c174a2??mymysql:v1

cp

用于容器與主機之間的數據拷貝。參數說明:

  • -L :?保持源目標中的鏈接
#?將主機/www/runoob目錄拷貝到容器96f7f14e99ab的/www目錄下。??docker?cp?/www/runoob?96f7f14e99ab:/www/??#?將主機/www/runoob目錄拷貝到容器96f7f14e99ab中,目錄重命名為www。??docker?cp?/www/runoob?96f7f14e99ab:/www??#?將容器96f7f14e99ab的/www目錄拷貝到主機的/tmp目錄中。??docker?cp??96f7f14e99ab:/www?/tmp/

diff

檢查容器里文件結構的更改。

#?查看容器mymysql的文件結構更改。??docker?diff?mymysql

鏡像倉庫命令

login/logout

docker login :?登陸到一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認為官方倉庫 Docker Hubdocker logout :登出一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認為官方倉庫 Docker Hub參數說明:

  • -u :?登陸的用戶名
  • -p :?登陸的密碼
#?登陸到Docker?Hub??docker?login?-u?用戶名?-p?密碼??#?登出Docker?Hub??docker?logout

pull

從鏡像倉庫中拉取或者更新指定鏡像。參數說明:

  • -a :?拉取所有 tagged 鏡像
  • –disable-content-trust :?忽略鏡像的校驗,默認開啟
#?從Docker?Hub下載java最新版鏡像。??docker?pull?java??#?從Docker?Hub下載REPOSITORY為java的所有鏡像。??docker?pull?-a?java

push

將本地的鏡像上傳到鏡像倉庫,要先登陸到鏡像倉庫。參數說明:

  • –disable-content-trust :?忽略鏡像的校驗,默認開啟
#?上傳本地鏡像myapache:v1到鏡像倉庫中。??docker?push?myapache:v1

search

從Docker Hub查找鏡像。參數說明:

  • –automated :?只列出 automated build類型的鏡像;
  • –no-trunc :?顯示完整的鏡像描述;
  • -f :?列出指定條件的鏡像。
#?從?Docker?Hub?查找所有鏡像名包含?java,并且收藏數大于?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]

每列參數說明:

  • NAME:?鏡像倉庫源的名稱
  • DESCRIPTION:?鏡像的描述
  • OFFICIAL:?是否 docker 官方發布
  • stars:?類似 github 里面的 star,表示點贊、喜歡的意思
  • 另外搜索公眾號GitHub猿后臺回復“賺錢”,獲取一份驚喜禮包。
  • AUTOMATED:?自動構建

本地鏡像管理命令

images

列出本地鏡像。參數說明:

  • -a :?列出本地所有的鏡像(含中間映像層,默認情況下,過濾掉中間映像層);
  • –digests :?顯示鏡像的摘要信息;
  • -f :?顯示滿足條件的鏡像;
  • –format :?指定返回值的模板文件;
  • –no-trunc :?顯示完整的鏡像信息;
  • -q :?只顯示鏡像ID。
#?查看本地鏡像列表。??docker?images??#?列出本地鏡像中REPOSITORY為ubuntu的鏡像列表。??docker?images??ubuntu

rmi

刪除本地一個或多個鏡像。參數說明:

  • -f :?強制刪除;
  • –no-prune :?不移除該鏡像的過程鏡像,默認移除;
  • 另外,搜索公眾號linux就該這樣學后臺回復“Linux”,獲取一份驚喜禮包。
#?強制刪除本地鏡像?guodong/ubuntu:v4。??docker?rmi?-f?guodong/ubuntu:v4

tag

標記本地鏡像,將其歸入某一倉庫。

#?將鏡像ubuntu:15.10標記為?runoob/ubuntu:v3?鏡像。??docker?tag?ubuntu:15.10?runoob/ubuntu:v3

build

用于使用 Dockerfile 創建鏡像。參數說明:

  • –build-arg=[] :?設置鏡像創建時的變量;
  • –cpu-shares :?設置 cpu 使用權重;
  • –cpu-period :?限制 CPU CFS周期;
  • –cpu-quota :?限制 CPU CFS配額;
  • –cpuset-cpus :?指定使用的CPU id;
  • –cpuset-mems :?指定使用的內存 id;
  • –disable-content-trust :?忽略校驗,默認開啟;
  • -f :?指定要使用的Dockerfile路徑;
  • –force-rm :?設置鏡像過程中刪除中間容器;
  • –isolation :?使用容器隔離技術;
  • –label=[] :?設置鏡像使用的元數據;
  • -m :?設置內存最大值;
  • –memory-swap :?設置Swap的最大值為內存+swap,”-1″表示不限swap;
  • –no-cache :?創建鏡像的過程不使用緩存;
  • –pull :?嘗試去更新鏡像的新版本;
  • –quiet, -q :?安靜模式,成功后只輸出鏡像 ID;
  • –rm :?設置鏡像成功后刪除中間容器;
  • –shm-size :?設置/dev/shm的大小,默認值是64M;
  • –ulimit :?Ulimit配置。
  • –squash :?將 Dockerfile 中所有的操作壓縮為一層。
  • –tag, -t:?鏡像的名字及標簽,通常 name:tag 或者 name 格式;可以在一次構建中為一個鏡像設置多個標簽。
  • –network:?默認 default。在構建期間設置RUN指令的網絡模式
#?使用當前目錄的?Dockerfile?創建鏡像,標簽為?runoob/ubuntu:v1??docker?build?-t?runoob/ubuntu:v1?.???#?使用URL?github.com/creack/docker-firefox?的?Dockerfile?創建鏡像??docker?build?github.com/creack/docker-firefox??#?通過?-f?Dockerfile文件的位置?創建鏡像??docker?build?-f?/path/to/a/Dockerfile?.

history

查看指定鏡像的創建歷史。參數說明:

  • -H :?以可讀的格式打印鏡像大小和日期,默認為true;
  • –no-trunc :?顯示完整的提交記錄;
  • -q :?僅列出提交記錄ID。
#?查看本地鏡像?guodong/ubuntu:v3?的創建歷史。??docker?history?guodong/ubuntu:v3

save

將指定鏡像保存成 tar 歸檔文件。參數說明:

  • -o :?輸出到的文件。
#?將鏡像?runoob/ubuntu:v3?生成?my_ubuntu_v3.tar?文檔??docker?save?-o?my_ubuntu_v3.tar?runoob/ubuntu:v3

load

導入使用?docker save?命令導出的鏡像。參數說明:

  • input , -i :?指定導入的文件,代替 STDIN。
  • –quiet , -q :?精簡輸出信息。
#?導入鏡像??docker?load?--input?fedora.tar

import

從歸檔文件中創建鏡像。參數說明:

  • -c :?應用docker 指令創建鏡像;
  • -m :?提交時的說明文字;
#?從鏡像歸檔文件my_ubuntu_v3.tar創建鏡像,命名為runoob/ubuntu:v4??docker?import??my_ubuntu_v3.tar?runoob/ubuntu:v4

基礎版本信息命令

info

顯示 Docker 系統信息,包括鏡像和容器數。

#?查看docker系統信息。??docker?info

version

顯示 Docker 版本信息。

docker?version

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享