?? Linux Docker 基本命令參數詳解

🐳 Linux Docker 基本命令參數詳解


📘 1. Docker 簡介


Docker 是一個開源的容器化平臺,它通過將應用及其依賴打包到一個輕量級、可移植的容器中,從而實現跨平臺運行。Docker 采用 C/S 架構,服務端稱為 Docker Daemon,客戶端通過 CLI 工具與其交互。

核心概念包括:

  • 鏡像(Image):只讀模板,包含操作系統、應用程序及其依賴。
  • 容器(Container):鏡像的運行實例,具備輕量、快速啟動等優勢。
  • 倉庫(Registry):存放鏡像的遠程服務器,如 Docker Hub。
  • 網絡(Network):用于容器之間或容器與主機之間的通信。

Docker 的安裝和配置詳見:
Linux 安裝與配置 Docker


🛠? 2. Docker 命令及參數


📦 2.1 容器命令


🔄 2.1.1 容器運行狀態轉換命令

用于管理容器的生命周期,包括創建、啟動、暫停、恢復、停止、強制終止和刪除等操作。


  • docker create
    創建一個新容器但不啟動,適用于需要先設置參數再手動啟動的場景。
    命令格式:

    sudo docker create [-it] \[--name 容器名] \[-p 容器端口:宿主機端口] \[-e 環境變量] \[-v 宿主機路徑:容器路徑] \<鏡像名或鏡像ID>
    

    說明:

    • [-it]: 這里的 -i 表示保持標準輸入流開放; -t 表示分配一個偽終端,適用于交互式容器運行
    • [--name]: 容器名:如果你在使用 Docker 容器命令的時候不想輸入一長串哈希值,那你最好在這里給容器起一個簡單好記得名字
    • [-p 容器端口]:宿主機端口:對于需要開放端口的容器,將容器的端口映射到宿主機的端口,這樣容器服務就可對外訪問
    • [-e 環境變量]:設置容器的環境變量
    • [-v 宿主機路徑]:容器路徑:掛載宿主機目錄到容器內部,方便保存和修改容器中的目錄
    • <鏡像名或鏡像ID>:創建容器所使用的鏡像的名字或ID,對應 docker images命令顯示的 IMAGE ID 和 REPOSITORY

    提示:一般在專業的技術文檔中[]內部的參數為可選參數,<>內部的參數為必選參數

    效果:

    在這里插入圖片描述

    解釋:這里通過交互終端的方式創建了一個 tomcat 容器,容器名為 tomcat_1,將宿主機的 5555 端口映射到容器的 8080 端口,添加設置時區為上海的環境變量,將容器內 /usr/local/tomcat/webapps 目錄掛載到當前路勁下 webapps 文件夾中

    注意:一般為了讓容器持續運行,都會加 -it 參數。因為有很多非服務性質的容器,打開后 docker 檢測到容器內沒有進程持續再跑就會自動把容器關閉。 -it 參數會再容器內掛一個持續在跑的交互式終端進程,這樣容器內就至少有一個進程再跑,就不會被 docker 自動關閉了


  • docker run
    創建并立即運行一個容器,相當于 docker createdocker start 的組合。
    命令格式:

    sudo docker run [-d] \[-it] \[--name 容器名] \[-p 容器端口:主機端口] \[-e 環境變量] \[-v 主機路徑:容器路徑] \<鏡像名或鏡像ID>
    

    說明:

    • 大多數 docker create 的參數 docker run 都能用。還有一些設置執行方式的參數 docker create 不能用但是 docker run 能用,比如 -d 表示終端后臺執行

    效果:

    在這里插入圖片描述

    解釋:這里用 docker run 命令以后臺啟動的方式啟動了一個 tomcat 容器,容器名稱為 tomcat_3,開啟交互式終端進程,將宿主機的 5555 端口映射到容器的 8080 端口,添加設置時區為上海的環境變量,將容器內 /usr/local/tomcat/webapps 目錄掛載到當前路勁下 webapps 文件夾中

    注意:docker run 不能啟動已經由 docker create 創建的容器


  • docker start
    啟動一個已經存在但處于停止狀態的容器,不會創建新容器。
    命令格式:

      sudo docker start [-a] [-i] <容器名或ID>
    

    說明:

    • [-a]:將容器的標準輸出(stdout)和標準錯誤輸出(stderr)附加到當前終端。這意味著你能看到容器中程序的輸出信息,適合調試或實時查看日志。
    • [-i]:保持標準輸入(stdin)打開,使你可以向容器內發送輸入,通常與 -a 配合使用以實現交互式操作(如進入容器后執行命令)
    • <容器名或ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:這里用 docker start 命令啟動了 ubuntu_1 容器,可以看到啟動后直接進入終端交互界面。需要注意 -ai 一般都是用在有交互界面的容器比如 Ubuntu 或 CentOS 上,像 tomcat 這種服務類型的容器即使加了 -ai 也無法在終端輸入命令。

    解釋: 這里用 docker start 命令啟動了剛被創建的 tomcat_1 容器,容器狀態從 Created 轉變為 Up 。


  • docker pause
    暫停容器中所有進程,常用于臨時掛起服務或調試容器狀態。
    命令格式:

    sudo docker pause <容器名或ID>
    

    說明:

    • <容器名或ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:這里暫停了容器 ubuntu_1 ,容器狀態從 Up 轉變為 Up(Paused) 。


  • docker unpause
    恢復被暫停的容器進程,使其繼續運行。
    命令格式:

    sudo docker unpause <容器名或ID>
    

    說明:

    • <容器名或ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:這里解除暫停了容器 ubuntu_1 ,容器狀態從 Up(Paused) 轉變為 Up 。


  • docker stop
    正常停止容器,先發送 SIGTERM 信號,若未在限定時間內關閉,則發送 SIGKILL。
    命令格式:

    sudo docker stop <容器名或ID>
    

    說明:

    • <容器名或ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:這里用 docker stop 停止了 ubuntu_1 容器,容器的狀態從 Up 轉變為 Exited 。


  • docker kill
    強制終止容器進程,直接發送 SIGKILL 信號,不等待容器自行關閉。
    命令格式:

    sudo docker kill <容器名或ID>
    

    說明:

    • <容器名或ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋: 這里強制關閉了容器 tomcat_1,容器狀態從 Up 轉變為 Exited 。


  • docker restart
    重啟容器,相當于先執行 stopstart,適用于配置變更或服務重啟。
    命令格式:

    sudo docker restart <容器名或ID>
    

    說明:

    • <容器名或ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:這里重新啟動了 tomcat_1 容器,容器狀態從26秒前的 Up 變成了4秒前的 Up,可見應該是重開過一回了。


  • docker rm
    刪除已停止的容器,釋放系統資源,需先確保容器不在運行中。
    命令格式:

    sudo docker rm <容器名或ID>
    

    說明:

    • <容器名或ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋: 這里用 dcoker rm 移除了 ubuntu_1 容器,可以看到移除后的容器已經無法用 docker ps 命令找到了


🧩 2.1.2 容器系統操控命令

本節介紹的命令用于對已啟動的容器進行交互、查看或文件操作,是日常維護和調試容器中最常用的工具。


  • docker exec
    在運行中的容器中執行命令,常用于調試、進入容器內部操作或運行額外程序。
    命令格式:

    sudo docker exec [-it] <容器名或容器ID> [啟動程序]
    

    說明:

    • [-i]:保持標準輸入流(stdin)開啟,即使未連接終端。
    • [-t]:分配一個偽終端(TTY),與 -i 一起使用以實現交互式操作。
    • <容器名或容器ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。
    • [啟動程序]:容器內要執行的命令或程序,例如 /bin/bash、ls、top 等。

    效果:

    在這里插入圖片描述

    解釋:這里用 docker exec 進入了 tomcat 容器,可以看到進入容器后能夠正常進行交互查看容器內容


  • docker attach
    附加到容器的主進程終端,顯示容器當前的標準輸出,可用于查看日志或與主進程交互。
    命令格式:

    sudo docker attach <容器名或容器ID>
    

    說明:

    • <容器名或容器ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    提示:其實 attach 也有很多可選參數,像--no-stdin之類的,但是開發或調試都基本上用不到。那這些參數設計出來是干什么的?我覺得是用來折磨客戶的,為什么這么說,你看我寫的第三節注意事項就知道了

    效果:

    在這里插入圖片描述

    解釋:這里用 dockere attach 進入了 ubuntu 容器,可以看到進入容器后能夠正常進行交互查看容器內容

    在這里插入圖片描述

    解釋:這里用 docker attach 進入了 tomcat 容器,可以看到進入了以后不能輸入任何信息只能看 tomcat 的日志,這是因為 tomcat 默認沒有終端交互功能。要想看 tomcat 容器中的文件需要用 docker exec 命令


  • docker cp
    在宿主機與容器之間復制文件或目錄,支持雙向操作。
    命令格式:

    sudo docker cp <源路徑> <目標路徑>
    

    說明:

    • <源路徑>:可以是宿主機路勁也可以是容器路徑,如果是容器路徑需要在路徑前添加 <容器名>:
    • <目標路徑>:可以是宿主機路勁也可以是容器路徑,如果是容器路徑需要在路徑前添加 <容器名>:

    效果:

    在這里插入圖片描述

    解釋:這里用了 docker cp 命令將 tomcat 容器中的 README.md 文件復制出來,可以看到當前路徑下多了 README.md 文件


🔍 2.1.3 容器信息檢查命令

本小節介紹用于檢查 Docker 容器狀態、資源使用情況和日志輸出的常用命令,適用于日常監控、調試和排查容器運行狀態。


  • docker ps
    列出當前運行中的容器,顯示容器的 ID、鏡像、創建時間、狀態、端口映射及名稱等基礎信息。
    命令格式:

    docker ps [-a] [-q]
    

    說明:

    • [-a]:列出所有容器,包括已停止的容器(不加這個參數 docker ps 僅顯示運行中的容器)。
    • [-q]:僅輸出容器 ID(常用于腳本中進一步處理)。

    效果:

    在這里插入圖片描述

    解釋:這里依次使用了 docker ps 以及帶 -a 和 帶-aq 的 docker ps ,可以看到 docker ps 顯示的信息根據參數的不同而產生的變化。

    在這里插入圖片描述

    這里使用 docker ps -aq 命令配合 docker stop 命令實現全部容器的停止,docker ps -aq 命令還可以和其他容器狀態轉換命令配合使用達到所有容器統一操作的效果。


  • docker top
    查看指定容器內運行的進程信息,類似于 Linux 系統中的 ps 命令,展示 PID、用戶、啟動時間、CPU 使用情況等。
    命令格式:

    docker top <容器名或容器ID>
    

    說明:

    • <容器名或容器ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:這里利用 docker top 命令查看了 tomcat 容器內再跑的進程狀態


  • docker stats
    實時顯示一個或多個容器的資源使用情況,包括 CPU 使用率、內存使用量/限制、網絡 I/O、塊設備 I/O 等。
    命令格式:

    docker stats [容器名或容器ID]
    

    說明:

    • [容器名或容器ID]:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。如果不指定容器則默認監控所有正在運行的容器

    效果:

    在這里插入圖片描述

    解釋:在執行了 docker status tomcat_1 命令以后就會進入這個狀態界面,這里會詳細的顯示容器的 CPU 占用率和內存占用率,按下 Ctrl+C 可以退出這個界面


  • docker diff
    顯示自容器創建以來文件系統的變化,列出被添加(A)、刪除(D)或修改(C)的文件或目錄。
    命令格式:

    docker diff <容器名或容器ID>
    

    說明:

    • <容器名或容器ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:這里 docker diff 顯示內容中 C 表示修改過的目錄,A 表示新增的目錄


  • docker logs
    查看容器日志輸出。
    命令格式:

    docker logs [-f] [--tail 行數] [--since 時間] [--timestamps] <容器名或容器ID>
    

    說明:

    • [-f]:實時輸出日志內容(follow 模式,類似 tail -f)。
    • [--tail 行數]:僅顯示指定數量的最新日志,例如 --tail 100。
    • [--since 時間]:顯示自指定時間以來的日志,如 --since 10m(最近10分鐘)。
    • [--timestamps]:在日志行前顯示時間戳。
    • <容器名或容器ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:這里查看了10條 tomcat 的日志


  • docker port
    顯示容器內部端口和宿主機端口之間的映射關系,適用于驗證服務暴露狀態和網絡通信設置。
    命令格式:

    docker port <容器名或容器ID>
    

    說明:

    • <容器名或容器ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:這里用 docker port 查看了 tomcat 容器的端口映射。


  • docker inspect
    以 JSON 格式輸出容器的詳細配置信息,包括掛載卷、網絡設置、環境變量、啟動命令、IP 地址等。
    命令格式:

    docker inspect <容器名或容器ID>
    

    說明:

    • <容器名或容器ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:這里用 docker inspect 查看了 tomcat 容器的詳細信息,這條命令的輸出一般會很長,有時可能會沖掉好幾個屏幕,建議配合 grep 命令過濾掉無用的信息。


🧱 2.2 鏡像命令


🛠? 2.2.1 鏡像操作命令

本小節介紹 Docker 鏡像的常用操作命令,涵蓋從構建、打包、上傳、下載到刪除鏡像的整個生命周期,適用于本地開發與遠程部署場景。


  • docker commit
    基于正在運行的容器生成新的鏡像,常用于容器內手動修改后的持久化保存。
    命令格式:

    docker commit [-a] \
    [-m] \
    [--pause] \
    <容器ID或容器名> \
    <目標鏡像名:標簽>
    

    說明:

    • [-a]:指定鏡像的作者信息。
    • [-m]:添加一條提交說明,用于描述鏡像的變更內容
    • [--pause]:在提交時是否暫停容器(默認值為 true,推薦保持),可防止寫入過程中狀態不一致
    • <容器名或容器ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。
    • <目標鏡像名:標簽>:給鏡像起個名字,順便帶個版本號。

    效果:

    在這里插入圖片描述

    解析:這里利用正在運行的 ubuntu 容器,生成了一個新的鏡像 ubuntu1:1.0


  • docker pull
    從遠程鏡像倉庫(如 Docker Hub)拉取指定鏡像到本地。
    命令格式:

    docker pull <鏡像名:標簽>
    

    說明:

    • <鏡像名:標簽>:你們公司 docker 倉庫里的鏡像名,以及版本號。

    效果:

    在這里插入圖片描述

    解釋:這里我從公共倉庫直接拉取了 nginx 鏡像,如果是要到私有倉庫拉取鏡像需要先用 docker login 登錄。


  • docker tag
    為已有鏡像打上新的標簽(tag),可用于本地重命名或準備推送到私有倉庫。
    命令格式:

    docker tag <源鏡像名:標簽> <目標鏡像名:標簽>
    

    說明:

    • <源鏡像名:標簽>:你在進行修改操作的鏡像名稱以及對應版本號。
    • <源鏡像名:標簽>:你想創建的新的鏡像的名稱以及版本號。

    效果:

    在這里插入圖片描述

    解釋:這里可以通過 docker images 的信息看出,我將進行修改后的 tomcat 鏡像打上標簽,創建了一個新的鏡像


  • docker push
    將本地鏡像上傳到遠程鏡像倉庫。
    命令格式:

    docker push <鏡像名:標簽>
    

    說明:

    • <鏡像名:標簽>:你要上傳到公司 docker 倉庫的鏡像名,以及版本號。

    效果:

    在這里插入圖片描述

    解釋:要推送鏡像的前提是需要登錄 docker,我這里登錄了 docker Hub 將 huyulun/vim-net:1.0 這個鏡像推送到遠程倉庫。

    在這里插入圖片描述

    解釋:推送成功后打開 docker hub 網站登錄賬號可以看到上傳的鏡像


  • docker build
    根據指定路徑下的 Dockerfile 構建新的鏡像。
    命令格式:

    docker build -t <鏡像名:標簽> <路徑>
    

    說明:

    • <鏡像名:標簽>:你要上傳到公司 docker 倉庫的鏡像名,以及版本號。
    • <路徑>:構建 docker 鏡像的上下文路徑(通常是含有 Dockerfile 的目錄)

    ** 效果:**

    在這里插入圖片描述

    解釋:這里我利用當前目錄下的 Dockerfile 文件構建了鏡像,可以看到構建成功后新的鏡像會顯示在 docker images 中


  • docker save
    將一個或多個鏡像保存為本地 tar 包文件,方便分發或備份。
    命令格式:

    docker save -o <包名.tar> <鏡像名:標簽>
    

    說明:

    • <包名.tar>:給你的 tar 包起個名字。
    • <鏡像名:標簽>:你要打成 tar 包的鏡像名,以及版本號。

    效果:

    在這里插入圖片描述

    解釋:docker save 執行成功后會在當前路徑下生成一個鏡像的 tar 包


  • docker load
    從本地 tar 包文件中導入鏡像,常與 docker save 搭配使用。
    命令格式:

    docker load -i <鏡像文件.tar>
    

    說明:

    • <鏡像文件.tar>:你要導入的鏡像文件 tar 包。

    效果:

    在這里插入圖片描述

    解釋:這里我導入了當前目錄下的 at5.tar 鏡像包,可以看到 docker images 中多了一個 at5:1.0 的鏡像


  • docker rmi
    刪除本地鏡像(remove image),支持單個或多個鏡像同時刪除。
    命令格式:

    docker rmi <鏡像名或ID> [...]
    

    說明:

    • <鏡像名或ID> [...]:創建容器所使用的鏡像的名字或ID,對應 docker images命令顯示的 IMAGE ID 和 REPOSITORY 。可以一次性填寫多個鏡像名或ID。

    提示:一般在專業的技術文檔中[…]表示前面跟的那個參數的數量可以是單數也可以是復數

    效果:

    在這里插入圖片描述

    解釋:對比前后的 docker images,可以看到我利用 docker rmi 刪除了 at5:1.0 和 tomcat:1.1 兩個鏡像


🔍 2.2.2 鏡像信息檢查命令

鏡像信息檢查命令用于查看鏡像的基本信息、詳細配置以及遠程倉庫中可用的鏡像資源,有助于開發者進行篩選、管理和調試。


  • docker search
    用于在遠程鏡像倉庫(如 Docker Hub)中搜索公開鏡像。支持模糊匹配關鍵字,并返回鏡像名稱、描述、星級(Star 數)等信息,方便用戶選擇合適的基礎鏡像。
    命令格式:

    docker search <關鍵字>
    

    說明:

    • <關鍵字>:你要搜索的鏡像的名字。

    示例:
    在這里插入圖片描述

    解釋:這里列出來的就是你能 docker pull 到的公共鏡像。該功能需要訪問外網,并且只能搜索Docker Hub上的公共倉庫。如果不擅長配置 Docker 服務的網絡代理,可以直接上 Docker Hub 官網 搜索


  • docker images / docker image ls
    用于列出本地所有已下載的鏡像,包括鏡像倉庫名(REPOSITORY)、標簽(TAG)、鏡像 ID、創建時間和占用空間等。
    命令格式:

    docker images
    docker image ls
    

    示例:

    在這里插入圖片描述

    解釋:兩個命令唯一的區別就是docker images可以少打一個空格和一個 l 。


  • docker inspect
    顯示鏡像的底層詳細信息,返回 JSON 格式的數據,包括鏡像的創建時間、分層信息、配置參數、標簽、構建指令等。該命令非常適用于調試鏡像構建問題或驗證構建元數據。
    命令格式:

    docker inspect <鏡像名或鏡像ID>
    

    說明:

    • <鏡像名或鏡像ID>:你要查看的目標鏡像的名字或ID

    示例:

    解釋:這條命令會顯示一串很長的 JSON 數組,建議配合 grep 搜索命令使用,例如 sudo docker inspect tomcat | grep -A 10 "Layer"


🏢 2.3 Docker 網絡命令


🕸? 2.3.1 Docker 組網命令

Docker 支持自定義網絡管理功能,允許用戶創建、連接、斷開和刪除網絡資源,從而靈活地配置容器之間的通信方式。


  • docker network create
    用于創建一個自定義的 Docker 網絡,支持指定網絡驅動類型、子網范圍、網關地址等參數。

    命令格式:

    docker network create \--driver <網絡驅動> \--subnet <子網地址/掩碼> \--gateway <網關地址> \<網絡名稱>
    

    說明:

    • –driver <網絡驅動>:這里的網絡驅動需要在 bridge, host, none 之中三選一。
    • –subnet <子網地址/掩碼>:根據你的組網策略選擇子網地址和掩碼,不懂的話就寫 192.168.0.0/16
    • –gageway <網關地址>: 根據你的地址填寫網關地址,不懂的話就寫 192.168.0.1
    • <網絡名稱>:給你自定義創建的網絡起個帥氣的名字。

    效果:

    在這里插入圖片描述

    解釋:這里創建完以后顯示的一長串是鏡像的完整 ID,放心,不是亂碼,沒有報錯。


  • docker network rm
    用于刪除一個或多個未被使用的 Docker 網絡。如果某個網絡中仍有容器在運行,將無法被刪除,必須先斷開容器連接或停止容器。

    命令格式:

    docker network rm <網絡名或ID>
    

    說明:

    • <網絡名或ID>:這里的網絡名指的就是 docker network ls 中的 NAME , ID 指的就是 NETWORK ID。

    效果:

    在這里插入圖片描述


  • docker network connect
    將一個運行中的容器連接到指定的 Docker 網絡,使其具備與該網絡中其他容器通信的能力。一個容器可以同時連接到多個網絡。

    命令格式:

    docker network connect <網絡名或ID> <容器名或ID>
    

    說明:

    • <網絡名或ID>:這里的網絡名指的就是 docker network ls 中的 NAME , ID 指的就是 NETWORK ID。
    • <容器名或ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:命令執行完成后不會顯示任何信息,但是可以通過 docker inspect 來確認容器是否已經成功加入網絡


  • docker network disconnect
    將容器從指定的 Docker 網絡中斷開。斷開后該容器將無法再通過該網絡與其他容器通信。

    命令格式:

    docker network disconnect <網絡名或ID> <容器名或ID>
    

    說明:

    • <網絡名或ID>:這里的網絡名指的就是 docker network ls 中的 NAME , ID 指的就是 NETWORK ID。
    • <容器名或ID>:這里的容器名指的就是 docker ps 中的 NAMES , ID 指的就是CONTAINER ID。

    效果:

    在這里插入圖片描述

    解釋:命令執行完成后不會顯示任何信息,但是可以通過 docker inspect 來確認容器是否已經成功從網絡中移除


🔍 2.3.2 Docker 網絡信息檢查命令

Docker 網絡信息檢查命令主要用于查看當前系統中存在的網絡資源及其詳細配置,幫助用戶理解容器之間如何連接、隔離以及與外部通信的方式。


  • docker network ls
    查看網絡列表。
    命令格式:

    docker network ls
    

    效果:

    在這里插入圖片描述

    解釋:這里顯示的 NAME 為 bridge, host, none 的網絡為 Docker 自動創建的網絡。bridge 網絡中的容器會被分配虛擬 IP ; host 網絡中的容器會共享宿主機的 IP ; none 網絡中的容器沒有 IP。創建容器的時候不跟 --net 參數的話默認會被分配到 bridge 網絡中。


  • docker network inspect
    查看網絡配置詳情。

    命令格式:

    docker inspect <網絡名或ID>
    

    說明:

    • <網絡名或ID>:這里的網絡名指的就是 docker network ls 中的 NAME , ID 指的就是 NETWORK ID

    效果:

    在這里插入圖片描述


🧰 2.4 Docker 倉庫命令

在實際開發或部署過程中,企業通常會搭建私有鏡像倉庫(如 Harbor、JFrog Artifactory),用于集中管理項目鏡像、控制權限、提升部署效率。而默認情況下,Docker 使用的是官方鏡像倉庫 Docker Hub。以下是與倉庫認證相關的基本命令:


  • docker login
    用于登錄鏡像倉庫,以便后續拉取(pull)或推送(push)鏡像。登錄過程會將憑據保存在本地配置文件中(如 ~/.docker/config.json),用于身份驗證。

    命令格式:

    docker login -u <用戶名> <倉庫地址>
    

    說明:

    • -u <用戶名> :公司給你分配的 Docker 倉庫賬號,或者是你在 Docker Hub 上注冊的賬號。
    • <倉庫地址>:你們公司的倉庫地址。如果是登錄 Docker Hub,倉庫地址可省略。

    效果:

    在這里插入圖片描述

    解釋:命令執行后系統會提示輸入密碼,輸入完成后按回車即可登錄。這里我用自己的賬號登錄 Docker Hub。登錄成功后,即可在私有倉庫中執行鏡像上傳、下載等操作。

    提示:其實 docker login -u <用戶名> -p <密碼> 可以一步登錄,但是這樣我的密碼就被你知道了)


  • docker logout
    用于登出當前登錄的鏡像倉庫賬戶,清除本地保存的認證信息。

    命令格式:

    docker logout [倉庫地址]
    

    說明:

    • [倉庫地址]:你們公司的倉庫地址。如果未指定地址,則默認登出 Docker Hub。

    效果:

    在這里插入圖片描述


?? 3. 注意事項


🍁 docker build 構建鏡像失敗 exit code:100

再使用 Dockerfile 構建鏡像的時候出現以下情況

在這里插入圖片描述

這是因為 Dockerfile 中有下載安裝軟件的指令,而 Ubuntu:latest 鏡像默認軟件源 http://ports.ubuntu.com/ubuntu-ports 是失效的,需要切換到國內有效的軟件源,才能進行軟件倉庫的更新以及軟件的下載和安裝。但是我們在構建鏡像的時候又無法進入容器修改配置文件,所以只能采取通過 sed 命令在系統安裝軟件之前強制修改配置文件內容的方法了:

RUN sed -i -e 's|http://ports.ubuntu.com/ubuntu-ports|http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports|g' /etc/apt/sources.list.d/ubuntu.sources && \apt-get update && \apt-get install -y vim

💦 docker 容器起不來

如果你用 docker start 啟動容器時遇到以下情況

在這里插入圖片描述
或者用 docker run 啟動容器時遇到以下情況

在這里插入圖片描述
那么你需要檢查你的容器內部有沒有持續運行的進程。如果你的容器不是服務類型的(比如 tomcat 或 nginx ),而且你在啟動的時候沒有添加 -it 參數,那么容器啟動后會因為沒有持續運行的進程而被 docker 關閉。所以一般不管時什么性質的容器,只要他不報錯,我都會在啟動容器的時候加上 -it 參數。


💔Tomcat 容器 docker attach 卡死

如果你通過 docker attach 鏈接 Tomcat 容器時遇到以下情況

在這里插入圖片描述
光標就這樣卡在那兒不動了。這個時正常情況,因為 tomcat 是服務性質的容器,即使你添加了 -it 參數也無法在他的主進程中和他進行交互,這時候正確的做法應該是按下 Ctrl+C 然后使用帶 it 參數的 docker run 啟動 tomcat ,這樣才能進入到 tomcat 容器中。

但如果你閑的沒事使用了 docker attach 命令的 --no-stdin 參數去鏈接 tomcat 容器

在這里插入圖片描述

那么恭喜你,發現了一個能夠卡死終端的新方法。在這種情況下,你無論輸入任何指令終端都不會有相應,包括 Ctrl+C 和 Ctrl+P+Q 。原因是 docker attach 的 --no-stdin 參數會讓容器無視一切標準輸入中的指令,這相當于給本來就不怎么聰明的 tomcat 容器又灌了一瓶毒奶粉,這是真的沒救了,只能重開終端了。

至于為什么會有這種參數,我個人猜測是某些開發者有特殊的需求,希望客戶在使用容器的時候,出于安全的角度(我就是想折磨客戶😈),防止客戶誤輸入指令導致容器狀態異常,才設計出來的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86131.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86131.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86131.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring IoC 模塊設計文檔

注&#xff1a;碼友們&#xff0c;我們是從設計的角度一步步學習和分解Spring&#xff1b;所以不要一上來就想看源碼&#xff0c;也不需要關心Spring具體加載進去的&#xff1b;我們只封裝工具&#xff08;如IoC&#xff09;&#xff0c;至于調用&#xff0c;暫時不用考慮&…

Linux(生產消費者模型/線程池)

目錄 一 生產消費者模型 1. 概念&#xff1a; 2. 基于阻塞隊列的生產消費者模型&#xff1a; 1. 對鎖封裝 2. 對條件變量封裝 二 信號量(posix) 1. 概念 2. API 3. 基于環形隊列的生產消費者模型 三 線程池 1. 概念 2. 示例 四 補充字段 1. 可重入函數 VS 線程安…

無線網絡掃描與分析工具 LizardSystems Wi-Fi Scanner 25.05

—————【下 載 地 址】——————— 【?本章下載一】&#xff1a;https://pan.xunlei.com/s/VOS4QQ9APt3FgFQcxyArBiZlA1?pwdi4du# 【?本章下載二】&#xff1a;https://pan.xunlei.com/s/VOS4QQ9APt3FgFQcxyArBiZlA1?pwdi4du# 【百款黑科技】&#xff1a;https://uc…

Java Map完全指南:從基礎到高級應用

文章目錄 1. Map接口概述Map的基本特性 2. Map接口的核心方法基本操作方法批量操作方法 3. 主要實現類詳解3.1 HashMap3.2 LinkedHashMap3.3 TreeMap3.4 ConcurrentHashMap 4. 高級特性和方法4.1 JDK 1.8新增方法4.2 Stream API結合使用 5. 性能比較和選擇建議性能對比表選擇建…

[最全總結]城市災害應急管理系統

城市災害應急管理集成系統 | 國家重點研發政府間合作項目 Vue+ElementUI+Bpmn+Cesium+Java SpringBoot 項目描述 在智慧城市戰略背景下,項目面向內澇、團霧和火災等災害,開發了集災害模型集成模擬、場景可視化與應急預案管理于一體的系統,系統各子模塊進行軟件功能測試,測…

QtWidgets模塊功能及架構解析

QtWidgets 是 Qt 框架中用于創建傳統桌面應用程序圖形用戶界面(GUI)的核心模塊。在 Qt 6.0 中&#xff0c;QtWidgets 模塊繼續提供豐富的 UI 組件和功能&#xff0c;盡管 Qt 正在向 QML 方向演進&#xff0c;但 QtWidgets 仍然是許多桌面應用程序的基礎。 一、主要功能 基礎窗…

grep、wc 與管道符快速上手指南

&#x1f3af; Linux grep、wc 與管道符快速上手指南&#xff1a;從入門到實用 &#x1f4c5; 更新時間&#xff1a;2025年6月7日 &#x1f3f7;? 標簽&#xff1a;Linux | grep | wc | 管道符 | 命令行 文章目錄 前言&#x1f31f; 一、grep、wc 和管道符簡介1.核心功能2.核心…

C++11 右值引用:從入門到精通

文章目錄 一、引言二、左值和右值&#xff08;一&#xff09;概念&#xff08;二&#xff09;區別和判斷方法 三、左值引用和右值引用&#xff08;一&#xff09;左值引用&#xff08;二&#xff09;右值引用 四、移動語義&#xff08;一&#xff09;概念和必要性&#xff08;二…

java復習 04

心情復雜呢&#xff0c;現在是6.7高考第一天&#xff0c;那年今日此時此刻我還在考場掙扎數學&#xff0c;雖然結果的確很糟糕&#xff0c;&#xff0c;現在我有點對自己生氣明明很多事情待辦確無所事事沒有目標&#xff0c;不要忘記曾經的自己是什么樣子的&#xff0c;去年今日…

從零開始搭建 Pytest 測試框架(Python 3.8 + PyCharm 版)

概述 在軟件開發中&#xff0c;自動化測試是確保代碼質量的重要方式。而 Pytest 是一個功能強大且易于上手的 Python 測試框架&#xff0c;非常適合初學者入門。 本文將帶你一步步完成&#xff1a; 安裝和配置 Pytest在 PyCharm 中搭建一個清晰的測試項目結構 準備工作 在…

用電腦通過網口控制keysight示波器

KEYSIGHT示波器HD304MSO性能 亮點: 體驗 200 MHz 至 1 GHz 的帶寬和 4 個模擬通道。與 12 位 ADC 相比,使用 14 位模數轉換器 (ADC) 將垂直分辨率提高四倍。使用 10.1 英寸電容式觸摸屏輕松查看和分析您的信號。捕獲 50 μVRMS 本底噪聲的較小信號。使用獨有區域觸摸在幾秒…

Java Smart 系統題庫試卷管理模塊設計:從需求到開發的實戰指南

在教育信息化不斷推進的背景下&#xff0c;高效的題庫及試卷管理系統至關重要。Java Smart 系統中的題庫及試卷管理模塊&#xff0c;旨在為教師提供便捷的試題錄入、試卷生成與管理功能&#xff0c;同時方便學生在線練習與考試。本文將詳細介紹該模塊的設計思路與核心代碼實現。…

PDF圖片和表格等信息提取開源項目

文章目錄 綜合性工具專門的表格提取工具經典工具 綜合性工具 PDF-Extract-Kit - opendatalab開發的綜合工具包&#xff0c;包含布局檢測、公式檢測、公式識別和OCR功能 倉庫&#xff1a;opendatalab/PDF-Extract-Kit特點&#xff1a;功能全面&#xff0c;包含表格內容提取的S…

git小烏龜不顯示圖標狀態解決方案

第一步 在開始菜單的搜索處&#xff0c;輸入regedit命令&#xff0c;打開注冊表。 第二步 在注冊表編輯器中&#xff0c;找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 這一項。 第三步 讓Tortoise相關的項目排在前…

Windows平臺RTSP/RTMP播放器C#接入詳解

大牛直播SDK在Windows平臺下的RTSP、RTMP播放器模塊&#xff0c;基于自研高性能內核&#xff0c;具備極高的穩定性與行業領先的超低延遲表現。相比傳統基于FFmpeg或VLC的播放器實現&#xff0c;SmartPlayer不僅支持RTSP TCP/UDP自動切換、401鑒權、斷網重連等網絡復雜場景自適應…

題海拾貝:P1091 [NOIP 2004 提高組] 合唱隊形

Hello大家好&#xff01;很高興我們又見面啦&#xff01;給生活添點passion&#xff0c;開始今天的編程之路&#xff01; 我的博客&#xff1a;<但凡. 我的專欄&#xff1a;《編程之路》、《數據結構與算法之美》、《題海拾貝》、《C修煉之路》 歡迎點贊&#xff0c;關注&am…

Python控制臺輸出彩色字體指南

在Python開發中&#xff0c;有時我們需要在控制臺輸出彩色文本以提高可讀性或創建更友好的用戶界面。本文將介紹如何使用colorama庫來實現這一功能。 為什么需要彩色輸出&#xff1f; 提高可讀性&#xff1a;重要信息可以用不同顏色突出顯示更好的用戶體驗&#xff1a;錯誤信息…

chili3d 筆記17 c++ 編譯hlr 帶隱藏線工程圖

這個要注冊不然emscripten編譯不起來 --------------- 行不通 ---------------- 結構體 using LineSegment std::pair<gp_Pnt, gp_Pnt>;using LineSegmentList std::vector<LineSegment>; EMSCRIPTEN_BINDINGS(Shape_Projection) {value_object<LineSegment&g…

【Java開發日記】說一說 SpringBoot 中 CommandLineRunner

目錄 1、CommandLineRunner SpringBoot中CommandLineRunner的作用 簡單例子 多個類實現CommandLineRunner接口執行順序的保證 通過實現Ordered接口實現控制執行順序 通過Order注解實現控制執行順序 Order 作用 2、ApplicationRunner 3、傳遞參數 4、源碼跟蹤 run()方…

為什么React列表項需要key?(React key)(穩定的唯一標識key有助于React虛擬DOM優化重繪大型列表)

文章目錄 1. **幫助 React 識別列表項的變化**2. **性能優化**3. **避免組件狀態混亂**4. **為什么使用 rpid 作為 key**5. **不好的做法示例**6. **? 正確的做法** 在 React 中添加 key{item.rpid} 是非常重要的&#xff0c;主要有以下幾個原因&#xff1a; 1. 幫助 React 識…