Docker學習筆記(三)——Docker常用命令

NO IMAGE

常用命令及其詳解

  1. 幫助命令
  • docker version:版本信息
  • docker info:查看docker詳細信息
  • docker --help:查看命令幫助信息
  1. 鏡像命令
  • docker images:列出本地所有的鏡像(含中間印象層)
    Docker學習筆記(三)——Docker常用命令
參數說明
REPOSITORY表示鏡像的倉庫源
TAG鏡像的標籤
IMAGE ID鏡像ID
CREATED鏡像創建時間
SIZE鏡像大小

同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,我們使用 REPOSITORY:TAG 來定義不同的鏡像。

如果你不指定一個鏡像的版本標籤,例如你只使用 ubuntu,docker 將默認使用 ubuntu:latest 鏡像

docker images [OPTIONS]常用OPTIONS說明:

  • -a:列出本地的所有鏡像,包括中間印象層
  • -q:只顯示鏡像的ID
  • --digests:顯示鏡像的摘要信息
  • --no-trunc:顯示完整的鏡像信息
  • docker search [某鏡像的名字]:查找某個鏡像

    注意:即使本地鏡像源配置的是阿里雲,但是這個search也是去docker hub上去查找,只不過在pull的時候從阿里雲上pull。

docker search [OPTIONS] [某鏡像的名字]常用OPTIONS說明:

  • -s:列出收藏數(stars)不少於指定值的鏡像
  • --automated:只列出automated build類型的鏡像
  • --no-trunc:顯示完整的鏡像信息
    注意:在使用-s時,會出現Flag –stars has been deprecated, use –filter=stars=3 instead。也就是說-s已經被啟用了,可以使用 docker search --filter stars=x [某個鏡像的名字]來代替。同樣--automated可以使用--filter=is-automated=true 來代替。
  • docker pull [鏡像名字][:TAG]:下載某個鏡像

    注意:docker pull tomcat 相當於是docker pull tomcat:latest,不加後面的TAG的話默認是latest

    Docker學習筆記(三)——Docker常用命令

  • docker rmi [某個鏡像的名字/ID]:刪除單個某個鏡像

    注意:如果守護進程 daemon正在使用該鏡像,就會出現以下錯誤:

    Docker學習筆記(三)——Docker常用命令

    這種情況下,可以使用docker rmi -f [某個鏡像的名字/ID]來強制刪除。

刪除多個:docker rmi -f [鏡像名1][:TAG] [鏡像名2][:TAG]

刪除全部(組合命令):docker rmi -f $(docker images -qa)

說明:$()是shell腳本中的變量返回值的賦值

  • docker commit:提交容器副本,使之成為一個新的鏡像

    此命令就是把一個鏡像做修改之後使用副本重新提交成一個新的鏡像。相當於改裝。具體的使用方式為docker commit -m="提交的描述信息" -a="作者" [容器ID] [要創建的目標鏡像名]:[標籤名]

  1. 容器命令
  • docker run + [鏡像名稱]
Docker學習筆記(三)——Docker常用命令

根據下面打印的信息,可以看出,運行docker run首先會在本地containers中找hello-world容器,如果沒有,再在本地找hello-world的鏡像(images),如果還是沒有,就去遠程鏡像源(遠程倉庫)去pull。把鏡像pull到本地之後再生產容器去運行。當第二次再運行該命令時,直接運行本地的hello-world容器。

Docker學習筆記(三)——Docker常用命令
Docker學習筆記(三)——Docker常用命令

接下來,運行docker pull centos獲取centos的鏡像,下面部分全部使用該鏡像演示容器命令。

  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]:新建並啟動容器

    如果本地有,就直接啟動;如果本地沒有,先pull再run。

相關OPTIONS說明:

  • --name="容器新名字": 為容器指定一個名稱,相當於別名
  • -d: 後臺運行容器,並返回容器ID,也即啟動守護式容器
  • -i以交互模式運行容器,通常與 -t 同時使用
  • -t為容器重新分配一個偽輸入終端,通常與 -i 同時使用
  • -P: 隨機端口映射
  • -p: 指定端口映射,有以下四種格式
          ip:hostPort:containerPort
          ip::containerPort
          hostPort:containerPort
          containerPort

命令參數說明:
docker run -it centos是啟動交互式容器,運行之後可以看到下圖中shell的交互由docker變成了centos。

Docker學習筆記(三)——Docker常用命令

docker run -d啟動後centos後再用docker ps -a 發現容器已經退出
很重要的要說明的一點:Docker容器後臺運行,就必須有一個前臺進程。容器運行的命令如果不是那些一直掛起的命令(比如運行top,tail),就是會自動退出的。

Docker學習筆記(三)——Docker常用命令

  • docker ps:列出所有當前正在運行的容器

上圖沒有指定name熟悉,那麼docker會隨機分配給其一個name,linux下輸入ps是查看那些進程在運行,輸入docker ps是查看那些容器在運行。

Docker學習筆記(三)——Docker常用命令

相關OPTIONS說明(常用):

  • -a:列出當前所有正在運行的容器+歷史上運行過
  • -l:顯示最近創建的容器
  • -n:顯示最近n個創建的容器
  • -q :靜默模式,只顯示容器編號
  • --no-trunc :不截斷輸出
  • exit :容器停止退出

    ctrl + P +Q :容器不停止退出
    當停止不退出時,使用docker ps可以查看到centos容器正在運行

    Docker學習筆記(三)——Docker常用命令

  • docker start [容器ID/容器名]:啟動容器

  • docker restart [容器ID/容器名]:重新啟動容器

  • docker stop[容器ID/容器名]:停止容器(正常關機)

  • docker rm[容器ID]:刪除已停止的容器

    使用docker ps -n 3查看運行過的近三個容器:

    Docker學習筆記(三)——Docker常用命令

    可以看到centos正在運行,還有其他兩個已經停止。下面使用docker rm 刪除其中一個已停止的容器:

    Docker學習筆記(三)——Docker常用命令

    可以看到,ID為b78aeba89c42 的容器已經被刪除。

  • docker rm -f $(docker ps -a -q):一次性刪除多個容器

    docker ps -a -q | xargs docker rm:一次性刪除多個容器(Linux管道)

  • docker logs -f -t -tail [tail numbers] [容器ID]:顯示容器的日誌

相關OPTIONS說明(常用):

  • -t:顯示時加入時間戳
  • -f:跟隨最新的日誌打印
  • -tail [numbers]:顯示最後的多少條
  • docker top [容器ID]:從查看容器內運行的進程

    Docker學習筆記(三)——Docker常用命令

  • docker inspect [容器ID]:從查看容器內部細節

  • docker attach [容器ID]:重新進入正在運行的容器中,並以命令行進行交互,配合上面啟動容器後ctrl + P + Q退出後重新進入。

    docker exec -it [容器ID] [shell command]:可以不進入容器,直接在宿主機上運行容器裡的shell command,並返回結果。

    Docker學習筆記(三)——Docker常用命令

可以看到,在宿主機上執行centos 裡面的ls命令,返回centos的文件列表之後交互的shell還是宿主機。

兩種命令的區別:
attach是直接進入容器啟動終端命令,不會啟動新的進程,而exec是在容器中打開新的終端,並可以啟動新的進程。也就是說,使用docker attach [容器ID]進入容器之後再使用exit退出,容器就關閉了。而使用docker exec -it [容器ID] /bin/bash以bash的方式進入容器之後使用exit退出關閉的只是一個進程,容器還在啟動。

Docker學習筆記(三)——Docker常用命令
Docker學習筆記(三)——Docker常用命令

  • docker cp [容器ID]:[容器內的路徑] [目的主機的路徑]:從容器中拷貝文件到主機
    Docker學習筆記(三)——Docker常用命令

命令彙總(陽哥太貼心啦)

Docker學習筆記(三)——Docker常用命令

attach :Attach to a running container # 當前 shell 下 attach 連接指定運行鏡像

build :Build an image from a Dockerfile # 通過 Dockerfile 定製鏡像

commit :Create a new image from a container changes # 提交當前容器為新的鏡像

cp : Copy files/folders from the containers filesystem to the host path #從容器中拷貝指定文件或者目錄到宿主機中

create :Create a new container # 創建一個新的容器,同 run,但不啟動容器

diff :Inspect changes on a container’s filesystem # 查看 docker 容器變化

events :Get real time events from the server # 從 docker 服務獲取容器實時事件

exec :Run a command in an existing container # 在已存在的容器上運行命令

export :Stream the contents of a container as a tar archive # 導出容器的內容流作為一個 tar 歸檔文件[對應 import ]

history :Show the history of an image # 展示一個鏡像形成歷史

images :List images # 列出系統當前鏡像

import :Create a new filesystem image from the contents of a tarball # 從tar包中的內容創建一個新的文件系統映像[對應export]

info :Display system-wide information # 顯示系統相關信息

inspect :Return low-level information on a container # 查看容器詳細信息

kill :Kill a running container # kill 指定 docker 容器

load :Load an image from a tar archive # 從一個 tar 包中加載一個鏡像[對應 save]

login :Register or Login to the docker registry server # 註冊或者登陸一個 docker 源服務器

logout :Log out from a Docker registry server # 從當前 Docker registry 退出

logs :Fetch the logs of a container # 輸出當前容器日誌信息

port :Lookup the public-facing port which is NAT-ed to PRIVATE_PORT # 查看映射端口對應的容器內部源端口

pause :Pause all processes within a container # 暫停容器

ps :List containers # 列出容器列表

pull Pull an image or a repository from the docker registry server # 從docker鏡像源服務器拉取指定鏡像或者庫鏡像

push :Push an image or a repository to the docker registry server # 推送指定鏡像或者庫鏡像至docker源服務器

restart Restart a running container # 重啟運行的容器

rm :Remove one or more containers # 移除一個或者多個容器

rmi :Remove one or more images # 移除一個或多個鏡像[無容器使用該鏡像才可刪除,否則需刪除相關容器才可繼續或 -f 強制刪除]

run :Run a command in a new container # 創建一個新的容器並運行一個命令

save :Save an image to a tar archive # 保存一個鏡像為一個 tar 包[對應 load]

search :Search for an image on the Docker Hub # 在 docker hub 中搜索鏡像

start :Start a stopped containers # 啟動容器

stop :Stop a running containers # 停止容器

tag :Tag an image into a repository # 給源中鏡像打標籤

top :Lookup the running processes of a container # 查看容器中運行的進程信息

unpause :Unpause a paused container # 取消暫停容器

version :Show the docker version information # 查看 docker 版本號

wait :Block until a container stops, then print its exit code # 截取容器停止時的退出狀態值

相關文章

基於Gitlab進行開發團隊管理的嘗試——02.成員負載可視化

feign中的hytrix和turbin配置

來吧!一文徹底搞定哈希表!

使用curator實現分佈式master選舉