Docker有成千上百萬的命令行。所以Docker文檔內容十分豐富,同時又讓剛入門的新手感到不知所措。在本文中,我將重點介紹運行Docker的關鍵命令。docker
Docker鏡像是由Dockerfile和一些必要的依賴項組成的,Docker容器是動態的Docker鏡像。要使用Docker命令,首先須要知道您是在處理鏡像仍是容器。一旦你知道你所處理的是鏡像仍是容器以後,你才能夠找到正確的命令。shell
你須要知道一些關於Docker命令的規律:瀏覽器
Docker CLI管理命令以docker開頭,而後是空格,接着是管理類別,而後是空格最後是命令。例如,docker container stop這一命令能夠中止容器。bash
引用特定容器或鏡像的命令須要該容器或鏡像的名稱或ID。服務器
舉個例子,docker container run my_app 是用於構建和運行名爲my_app的容器的命令。在本文示例中,我將使用名稱my_container來引用通用容器。同理,my_image、my_tag也是如此。網絡
我將單獨提供命令和通用標誌。前面有兩個破折號的標誌是標誌的全名。帶有一個破折號的標誌是完整標誌名稱的縮寫。例如,-p是--port標誌的縮寫。app
本文的目標是讓您緊緊記住這些命令和標記,並但願您能夠在建立容器或構建鏡像的時候能夠將本指南做爲參考。本指南適用於Linux和Docker Engine版本18.09.1以及API版本1.39。ui
咱們先了解容器命令而後再看鏡像命令。url
使用 docker container my_command命令行
create — 從鏡像中建立一個容器
start — 啓動一個已有的容器
run — 建立一個新的容器而且啓動它
ls — 列出正在運行的容器
inspect — 查看關於容器的信息
logs — 打印日誌
stop — 優雅中止正在運行的容器
kill — 當即中止容器中的主要進程
rm — 刪除已經中止的容器
使用 docker image my_command
build — 構建一個鏡像
push — 將鏡像推送到遠程鏡像倉庫中
ls — 列出鏡像
history — 查看中間鏡像信息
inspect — 查看關於鏡像的信息,包括層
rm — 刪除鏡像
docker version — 列出關於Docker客戶端以及服務器版本的信息
docker login — 登陸到Docker鏡像倉庫
docker system prune — 刪除全部未使用的容器、網絡以及無名稱的鏡像(虛懸鏡像)
啓動容器
術語「建立」,「開始」和「運行」在平常生活中都具備類似的語義,但每一個都是一個獨立的Docker命令,用於建立並/或啓動容器。讓咱們先看看建立容器的命令。
docker container create my_repo/my_image:my_tag — 從一個鏡像中建立容器
我將在下文中把my_repo/my_image:my_tag縮寫爲 my_image。
你能夠經過傳遞許多標誌來create。
docker container create -a STDIN my_image
-a是—attach的縮寫,指將容器鏈接到STDIN,STDOUT或STDERR。
既然咱們已經建立了一個容器,那麼讓咱們來啓動它。
docker container start my_container — 啓動一個已有的容器
請注意,容器能夠經過容器的ID或容器的名稱來引用。
docker container start my_container
既然你知道如何建立和啓動一個容器,讓咱們來看看最多見的Docker命令。它將create和start結合到一個命令中:run。
docker container run my_image — 建立一個新容器而且啓動它。這一命令一樣也有許多選項。讓咱們看看其中幾個。
docker container run -i -t -p 1000:8000 --rm my_image
-i是—interactive的縮寫,即便未鏈接,也要保持STDIN打開;-t是—tty的縮寫,它會分配一個僞終端,將終端與容器的STDIN和STDOUT鏈接起來。
你須要指定-i和-t 經過終端shell與容器交互。
-p是 –port的縮寫。端口是與外部世界的接口。1000:8000將Docker端口8000映射到計算機上的端口1000。若是你有一個app輸出了一些內容到瀏覽器,你能夠將瀏覽器導航到localhost:1000而且查看它。
--rm自動刪除中止運行的容器。
讓咱們再來看看run的幾個例子。
docker container run -it my_image my_command
sh是你可在運行時指定的命令,它將在容器內部啓動shell會話,你能夠經過終端與其交互。對於Alpine鏡像,sh優於bash,由於Alpine鏡像不隨bash一塊兒安裝。鍵入exit以結束交互式shell會話。
請注意,咱們將-i和-t結合爲-it。
docker container run -d my_image
-d是—detach的縮寫,指在後臺運行容器,容許您在容器運行時將終端用於其餘命令。
檢查容器狀態
若是你有許多運行中的Docker容器而且想要找到與哪個互動,那麼你須要列出它們。
docker container ls — 列出運行中的容器,同時提供關於容器有用的信息。
docker container ls -a -s
-a是--all的縮寫,列出全部容器(不只僅是正在運行中的容器)
-s是—size的縮寫,列出每一個容器的大小。
docker container inspect my_container — 查看有關容器的信息
docker container logs my_container — 列出容器日誌
終止容器
有時你須要中止一個正在運行中的容器,你須要用到如下命令:
docker container stop my_container — 優雅地中止一個或多個正在運行的容器。在容器關閉以前提供默認10秒以完成任何進程。
若是你以爲10秒太長的話,可使用如下命令:
docker container kill my_container — 當即中止一個或多個正在運行的容器。這就像拔掉電視上的插頭同樣。可是在大多數狀況下,建議使用stop命令。
docker container kill $(docker ps -q)— 終止全部運行中的容器
你須要刪除容器可使用如下命令:
docker container rm my_container — 刪除一個或多個容器
docker container rm $(docker ps -a -q) — 刪除全部不在運行中的容器
以上就是Docker容器的關鍵命令。接下來,咱們來看看關於鏡像的命令。
如下是Docker鏡像使用的7條命令
構建鏡像
docker image build -t my_repo/my_image:my_tag . 在指定路徑或url的Dockerfile中構建一個名爲my_image的Docker鏡像。
-t是tag的縮寫,是告訴docker用提供的標籤來標記鏡像,在本例中,是my_tag。
在命令末尾的句號(.)是告訴Docker根據當前工做目錄中的Dockerfile構建鏡像。
當你構建好鏡像以後,你想要推送它到遠程倉庫中以便它能夠共享而且在有須要的時候被拉取。那麼下一個命令十分有用,儘管並不是是鏡像命令。
docker login — 登陸到Docker鏡像倉庫,根據提示鍵入你的用戶名和密碼
docker image push my_repo/my_image:my_tag — 推送一個鏡像到倉庫。
你擁有了這些鏡像以後,你可能想要檢查他們。
檢查鏡像
docker image ls — 列出你的鏡像以及每一個鏡像的大小
docker image history my_image — 顯示鏡像的中間鏡像,包括大小及其建立方式
docker image inspect my_image — 顯示關於鏡像的細節,包括組成鏡像的層
有時候你還須要清理你的鏡像。
清理鏡像
docker image rm my_image — 刪除指定鏡像。若是鏡像被保存在鏡像倉庫中,那麼該鏡像在那依舊可用。
docker image rm $(docker images -a -q) — 刪除全部鏡像。必須當心使用這一命令。請注意已經被推送到遠程倉庫的鏡像依然可以保存,這是鏡像倉庫的一個優點。
以上就是大部分與Docker鏡像相關的重要命令。
要在使用Docker時查看CLI引用,只需在命令行中輸入命令docker便可。Docker文檔請參閱:
https://docs.docker.com/engine/reference/commandline/cli/
如今你已經掌握了運行Docker的關鍵命令,能夠用Docker構建東西了!趕忙上手操做吧!