Docker常用命令大全


容器生命周期管理命令

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 : 重啟容器。

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。參數說明:

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

從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,表示點贊、喜歡的意思
  • AUTOMATED: 自動構建

本地鏡像管理命令

images

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

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

# 列出本地鏡像中REPOSITORY為ubuntu的鏡像列表。  
docker images  ubuntu  

rmi

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

  • -f : 強制刪除;
  • –no-prune : 不移除該鏡像的過程鏡像,默認移除;
# 強制刪除本地鏡像 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 

Ref:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM