Docker命令行入門大全:這18條,你不得不知

2020-12-11 51CTO

Docker有成千上百萬的命令行。因此Docker文檔內容十分豐富,同時又讓剛入門的新手感到不知所措。在本文中,我將重點介紹運行Docker的關鍵命令。

前 言

Docker鏡像是由Dockerfile和一些必要的依賴項組成的,Docker容器是動態的Docker鏡像。要使用Docker命令,首先需要知道您是在處理鏡像還是容器。一旦你知道你所處理的是鏡像還是容器之後,你才可以找到正確的命令。

命令的共性

你需要知道一些關於Docker命令的規律:

  • Docker CLI管理命令以docker開頭,然後是空格,接著是管理類別,然後是空格最後是命令。例如,docker container stop這一命令可以停止容器。
  • 引用特定容器或鏡像的命令需要該容器或鏡像的名稱或ID。

舉個例子,docker container run my_app 是用於構建和運行名為my_app的容器的命令。在本文示例中,我將使用名稱my_container來引用通用容器。同理,my_image、my_tag也是如此。

我將單獨提供命令和通用標誌。前面有兩個破折號的標誌是標誌的全名。帶有一個破折號的標誌是完整標誌名稱的縮寫。例如,-p是--port標誌的縮寫。

本文的目標是讓您牢牢記住這些命令和標記,並希望您可以在創建容器或構建鏡像的時候可以將本指南作為參考。本指南適用於Linux和Docker Engine版本18.09.1以及API版本1.39。

我們先了解容器命令然後再看鏡像命令。

容器命令

使用 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鏡像相關的重要命令。

【編輯推薦】

【責任編輯:

華軒

TEL:(010)68476606】

點讚 0

相關焦點

  • Docker 入門教程
    docker-ce-stabledocker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stabledocker-ce.x86_64 18.06.1.ce-3.el7
  • 雲計算核心技術Docker教程: events/inspect命令詳解
    在docker客戶端命令行中我們可以使用events命令從伺服器獲取實時事件便於查找調試問題,使用inspect命令獲取容器或鏡像的元數據。示例docker events : 從伺服器獲取實時事件語法docker events [OPTIONS]OPTIONS說明:-f :根據條件過濾事件;--since :從指定的時間戳後顯示所有事件;--until :流水時間顯示到指定的時間為止;例如,顯示docker 2020
  • 雲計算核心技術Docker教程:events/inspect命令詳解
    在docker客戶端命令行中我們可以使用events命令從伺服器獲取實時事件便於查找調試問題,使用inspect命令獲取容器或鏡像的元數據。示例docker events : 從伺服器獲取實時事件語法docker events [OPTIONS]OPTIONS說明:-f :根據條件過濾事件;
  • 推薦給IT新手的11個Docker免費上手項目
    使用該工具可以方便的通過界面管理 docker 不用再記那些命令。安裝命令:大幅度縮減 docker 鏡像的體積,方便分發,使用命令 docker-slim build --http-probe your-name/your-app。
  • 雲計算核心技術Docker教程:Docker容器使用
    docker 客戶端非常簡單 ,我們可以直接輸入 docker 命令來查看到 Docker 客戶端的所有命令選項。可以通過命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
  • 雲計算核心技術Docker教程:Docker Swarm 使用
    以下示例,均以 Docker Machine 和 virtualbox 進行介紹,確保你的主機已安裝 virtualbox。創建 swarm 集群管理節點(manager),首先我們先創建 docker 機器:$ docker-machine create -d virtualbox swarm-manager初始化 swarm 集群,進行初始化的這臺機器,就是集群的管理節點。
  • docker下高並發和高可用之docker swarm使用
    ,操作步驟參考Linux下安裝和使用Docker安裝完,使用命令sudo systemctl start docker啟動docker,再通過命令docker version查看docker版本信息利用docker swarm 命令來指定其中一臺虛擬機為docker的Manager管理機docker swarm init --advertise-addr
  • 30分鐘帶你了解Web工程師必知的Docker知識
    做過B端系統或有Saas系統開發經驗的朋友也許會清楚其中的繁瑣,為了客戶安全和私有化往往需要研發人員給企業配置和部署獨立的Web應用,如果你有上百家客戶上千家客戶,我們一個個部署顯然是效率極低的,而且不能保證環境的一致性和穩定性,因為一旦我們的Web系統使用的環境或者包更新了,應用很可能不能正常Work,這種情況下採用Docker容器化技術可以很好的解決這一問題。
  • 不用Docker也能構建容器的4種方法
    faas-cli build通常會運行或分叉出 docker,因為這個命令實際上只是一個包裝器。Format default|<id>[=<socket>|<key>[,<key>]]我使用下面的命令獲得與 Docker 命令等價的效果:sudo -E buildctl build --frontend dockerfile.v0 \ --local context=.
  • 雲計算核心技術Docker教程:Docker多階段構建
    這被稱為「構建器模式」。維護兩個Dockerfile是不理想的。請注意,此示例還RUN使用Bash&&運算符將兩個命令人工壓縮在一起,以避免在鏡像中創建額外的圖層。這是容易失敗的並且難以維護。
  • Kubernetes決定棄用Docker,到底會影響到誰?
    那麼這到底是怎麼回事?開發者和企業會受到什麼樣到影響?近幾年,Kubernetes 已經成為自有機房、雲上廣泛使用的容器編排方案,最廣泛的使用方式是 Kubernetes+Docker。從 DevOps 人員的角度,一面用 kubctl 命令、k8s API 來操作集群,一面在單機用 Docker 命令來管理鏡像、運行鏡像。
  • 命令行工具開發:如何快速實現命令行提示?
    文末福利:雲開發體驗——Linux指令入門。不少同學喜歡開發命令行工具,主要是開發快捷,而且和其他命令行工具配合,藉助腳本,非常容易實現一些任務的自動化。執行 aliyun --help,會發現非常多的子命令,如果沒有命令行工具提示,開發者使用這個工具就非常複雜,要去查文檔,或者通過命令行的help來輸入命令。aliyun的命令行工具也提供了對應的代碼提示,如下所示:這個命令行提示還不錯,你只需要選擇對應的子命令然後再進行提示就可以了。大多數開發者喜歡帶描述的命令行提示。
  • MacOS 常用終端命令大全
    不管是 Mac 還是 Linux 命令,都是由英文單詞組成,只要稍微懂些英文,通常從命令名稱就可以看出其功能。但是常用終端命令很多,不可能熟練掌握所有命令。下面就從網絡上總結了一些非常實用的 MacOS 常用終端命令大全,分享給大家。
  • 新手入門MYSQL資料庫命令大全
    一、命令行連接資料庫Windows作業系統進入CMD命令行,進入mysql.exe所在目錄,運行命令mysql.exe -h主機名 -u用戶名 -p密碼注意:參數名與值之間沒有空格 , 如:-h127.0.0.1
  • 《我的世界》命令方塊指令大全分享 mc我的世界命令方塊指令一覽
    那麼命令方塊都有哪些指令?下面帶來《我的世界》命令方塊指令大全及指令對應功能說明,希望對大家有幫助。 我... 《我的世界》命令方塊模組是一個類似於控制臺的MOD,玩家使用命令方塊輸入代碼可以實現很多功能。那麼命令方塊都有哪些指令?
  • docker-9:使用ambari-2.7.3部署大數據集群—兩節點demo
    瀏覽器訪問:你需要配置ecs的安全組開發8088埠http://ecs-ip:8088/通過下述命令獲取3個節點的ip進行集群部署:docker inspect 容器id | grep -i ip 三個節點IP是:
  • CentOS 8 Linux作業系統網卡命令
    CentOS7.3學習筆記總結(七十九)-CentOS 8 Linux作業系統網卡命令CentOS8 Linux作業系統啟用network.service,採用NetworkManager(NM)為網卡啟用命令,如果還是想用network.service服務,在CentOS8
  • Docker 快速部署兩個開源堡壘服務-Webterminal和JumpServer
    我一直在尋找一種安全的方法來管理我的雲基礎架構,並在Guihub中找到了這兩個項目。兩者都提供了一個Web GUI,以支持主要的遠程管理協議以連接到遠程目標。就像視頻一樣 希望你喜歡它。使用docker運行:# docker pull webterminal/webterminal
  • CentOS 8 Linux作業系統網卡命令介紹
    CentOS7.3學習筆記總結(七十九)-CentOS 8 Linux作業系統網卡命令CentOS8 Linux作業系統啟用network.service,採用NetworkManager(NM)為網卡啟用命令,如果還是想用network.service服務,在CentOS8 Linux系統中可以安裝network.service
  • 新手入門CAD,學會這15個命令和技巧,走遍天下都不怕
    8、 陣列命令:array,快捷命令AR;操作方式:輸入AR→空格→出現對話框,假如你想生成一個3行4列的圖形,那麼行裡寫3,列裡寫4 下邊的「偏移距離和方向「裡按你自己的需要填寫9、 延長命令:EXTEND