1. 程式人生 > >docker學習-03常用命令

docker學習-03常用命令

幫助命令:

docker version:版本
docker info:資訊
docker --help:幫助

映象命令:

docker images:列出映象。
各個選項說明:
REPOSITORY:表示映象的倉庫源
TAG:映象的標籤
IMAGE ID:映象ID
CREATED:映象建立時間
SIZE:映象大小
同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,我們使用 REPOSITORY:TAG 來定義不同的映象。
如果你不指定一個映象的版本標籤,例如你只使用 ubuntu,docker 將預設使用 ubuntu:latest 映象

OPTIONS說明:
  -a :列出本地所有的映象(含中間映像層)
  -q :只顯示映象ID。
  --digests :顯示映象的摘要資訊
  --no-trunc :顯示完整的映象資訊

docker search 某個XXX映象名字
       網站
           https://hub.docker.com
       命令
           docker search [OPTIONS] 映象名字
       OPTIONS說明:
            --no-trunc : 顯示完整的映象描述
            -s : 列出收藏數不小於指定值的映象。
            --automated : 只列出 automated build型別的映象;
docker rmi 某個XXX映象名字ID  刪除映象
  刪除單個
    docker rmi  -f 映象ID
  刪除多個
    docker rmi -f 映象名1:TAG 映象名2:TAG 
  刪除全部
    docker rmi -f $(docker images -qa)
docker pull 某個XXX映象名字  下載映象
docker pull 映象名字[:TAG]

容器命令:

1.有映象才能建立容器,這是根本前提(下載一個mysql映象演示) docker pull mysql
2.新建並啟動容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS說明:
     --name="容器新名字": 為容器指定一個名稱;
     -d: 後臺執行容器,並返回容器ID,也即啟動守護式容器;
     -i:以互動模式執行容器,通常與 -t 同時使用;
     -t:為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
     -P: 隨機埠對映;
     -p: 指定埠對映,有以下四種格式
         ip:hostPort:containerPort
         ip::containerPort
         hostPort:containerPort
         containerPort
啟動互動式容器:
     //使用映象mysql:latest以互動模式啟動一個容器,在容器內執行/bin/bash命令。
     docker run -it mysql /bin/bash 

3.列出當前所有正在執行的容器 docker ps [OPTIONS]
OPTIONS說明:
    -a :列出當前所有正在執行的容器+歷史上執行過的
    -l :顯示最近建立的容器。
    -n:顯示最近n個建立的容器。
    -q :靜默模式,只顯示容器編號。
    --no-trunc :不截斷輸出。
4.退出容器
兩種退出方式
    exit  容器停止退出
    ctrl+P+Q  容器不停止退出
5.啟動容器 docker start 容器ID或者容器名
6.重啟容器 docker restart 容器ID或者容器名
7.停止容器 docker stop 容器ID或者容器名
8.強制停止容器 docker kill 容器ID或者容器名
9.刪除已停止的容器 docker rm 容器ID 
一次性刪除多個容器
  docker rm -f $(docker ps -a -q)
  docker ps -a -q | xargs docker rm

經常使用需要注意的:

1.啟動守護式容器 docker run -d 容器名
//使用映象centos:latest以後臺模式啟動一個容器
docker run -d centos
 
問題:然後docker ps -a 進行檢視, 會發現容器已經退出
很重要的要說明的一點: Docker容器後臺執行,就必須有一個前臺程序.
容器執行的命令如果不是那些一直掛起的命令(比如執行top,tail),就是會自動退出的。
最佳的解決方案是,將你要執行的程式以前臺程序的形式執行,也可以使用shell不斷列印的方式。如
docker run -d centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done"
2.檢視容器日誌
  docker logs -f -t --tail 容器ID
    *   -t 是加入時間戳
    *   -f 跟隨最新的日誌列印
    *   --tail 數字 顯示最後多少條
3.檢視容器內執行的程序 docker top 容器ID
 docker top 473ea91eb9cd
UID     PID   PPID    C    STIME  TTY   TIME    CMD
polkitd  17752  17738  0   10:38   ?    00:00:01  mysqld
4.檢視容器內部細節 docker inspect 容器ID
5.進入正在執行的容器並以命令列互動 docker exec -it 容器ID /bin/bash
重新進入  docker attach 容器ID
上述兩個區別
      attach 直接進入容器啟動命令的終端,不會啟動新的程序
      exec 是在容器中開啟新的終端,並且可以啟動新的程序
6.從容器內拷貝檔案到主機上 docker cp  容器ID:容器內路徑 目的主機路徑

總結:

 

attach    # 當前 shell 下 attach 連線指定執行映象
build     # 通過 Dockerfile 定製映象
commit    # 提交當前容器為新的映象
cp        #從容器中拷貝指定檔案或者目錄到宿主機中
create    # 建立一個新的容器,同 run,但不啟動容器
diff      # 檢視 docker 容器變化
events    # 從 docker 服務獲取容器實時事件
exec      # 在已存在的容器上執行命令
export    # 匯出容器的內容流作為一個 tar 歸檔檔案[對應 import ]
history   # 展示一個映象形成歷史
images    # 列出系統當前映象
import    # 從tar包中的內容建立一個新的檔案系統映像[對應export]
info      # 顯示系統相關資訊
inspect   # 檢視容器詳細資訊
kill      # kill 指定 docker 容器
load      # 從一個 tar 包中載入一個映象[對應 save]
login     # 註冊或者登陸一個 docker 源伺服器
logout    # 從當前 Docker registry 退出
logs      # 輸出當前容器日誌資訊
port      # 檢視對映埠對應的容器內部源埠
pause     # 暫停容器
ps        # 列出容器列表
pull      # 從docker映象源伺服器拉取指定映象或者庫映象
push      # 推送指定映象或者庫映象至docker源伺服器
restart   # 重啟執行的容器
rm        # 移除一個或者多個容器
rmi       # 移除一個或多個映象[無容器使用該映象才可刪除,否則需刪除相關容器才可繼續或 -f 強制刪除]
run       # 建立一個新的容器並執行一個命令
save      # 儲存一個映象為一個 tar 包[對應 load]
search    # 在 docker hub 中搜索映象
start     # 啟動容器
stop      # 停止容器
tag       # 給源中映象打標籤
top       # 檢視容器中執行的程序資訊
unpause   # 取消暫停容器
version   # 檢視 docker 版本號
wait      # 擷取容器停止時的退出狀態值