Docker技術概論(4):Docker CLI 基本用法解析

Docker技術概論(4)
Docker CLI 基本用法解析

- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at: https://jclee95.blog.csdn.net
My WebSitehttp://thispage.tech/
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/136359965
HuaWei:https://bbs.huaweicloud.com/blogs/422869

【介紹】:在本文中,我們將探討 Docker CLI 的基本用法,包括如何使用命令來查找、拉取、推送、導出、加載鏡像,以及如何創建容器、進行文件拷貝、數據卷掛載和容器管理等操作。通過學習和掌握這些基本用法,用戶可以更好地利用 Docker CLI 來管理他們的容器化應用,提高工作效率和便捷性。

在這里插入圖片描述


上一節:《 Docker 中的基本概念 | 下一節:《 Docker網絡


1. 概述

Docker 是一個開源項目,它使得開發者和系統管理員可以輕松地在容器中部署應用、任務或服務。容器技術允許您將應用及其依賴環境打包成一個輕量級、可移植的容器中,這樣可以確保它在任何 Linux 機器上無縫運行,無論是 物理機、虛擬機、云提供商平臺還是個人電腦。Docker 使用簡單的命令行工具和一系列APIs,提供了一個高效的方式來管理容器的生命周期,包括構建、發布、運行、更新和停止容器。

在本文中,我們將探討 Docker CLI 的基本用法,包括如何使用命令來查找、拉取、推送、導出、加載鏡像,以及如何創建容器、進行文件拷貝、數據卷掛載和容器管理等操作。通過學習和掌握這些基本用法,用戶可以更好地利用 Docker CLI 來管理他們的容器化應用,提高工作效率和便捷性。
通過本文的介紹和實例操作,讀者將能夠全面了解 Docker CLI 的功能和用法,從而更好地利用 Docker 技術來構建、部署和管理他們的應用程序。Docker CLI 的強大功能和靈活性將為用戶帶來更高效的開發和部署體驗,為現代軟件開發提供了重要的支持和工具。

2. 鏡像

2.1 Docker Hub

https://hub.docker.com/

Docker Hub是用于存儲、分享和管理Docker容器鏡像的在線平臺,為Docker社區提供了一個集中存儲和共享容器鏡像的地方。

如果在需要在Docker Hub存儲發布自己的鏡像,需要注冊一個Docker Hub賬戶。首先,需要在Docker Hub上創建一個賬戶。這可以通過訪問Docker Hub網站(https://hub.docker.com/)并點擊"Sign UP"按鈕來完成。

在這里插入圖片描述

當然你也可以選擇使用GitHUb等第三方工具進行注冊/登陸:

在這里插入圖片描述

如果使用第三方注冊,首次登陸后可以在下面的頁面修改你的密碼:

https://hub.docker.com/settings/general

在這里插入圖片描述

依據郵件完成密碼更改即可。

2.2 鏡像的查找

在Docker中,你可以使用docker search命令來查找Docker Hub中的鏡像:

docker search <key-works>

其中:

  • 表示關鍵詞。

例如,如果查找與Ubuntu相關的鏡像,可以運行以下命令:

docker search ubuntu

在這里插入圖片描述

2.3 鏡像的拉取

要拉取一個Docker鏡像,可以使用docker pull命令,例如:

docker pull ubuntu

上述命令將從Docker Hub拉取官方的Ubuntu鏡像。你可以替換"ubuntu"為你需要的其他鏡像名稱。

你可以通過“:tag”指定標簽來選擇不同的版本的鏡像。例如,如果拉取Ubuntu 20.04版本的鏡像,可以運行以下命令:

docker pull ubuntu:20.04

或者直接使用“latest”標簽來拉取最新版本的鏡像:

docker pull ubuntu:latest

如果不指定版本標簽,Docker將默認拉取最新的版本。

要查看已經拉取到本地的鏡像,可以使用docker images命令:

docker images

在這里插入圖片描述

從截圖的示例中可以看到,當前拉取過3個鏡像,以及各自的相關參數信息。

2.4 鏡像的推送

鏡像推送需要先執行登陸命令:

docker login

在這里插入圖片描述

如果你想將自己創建的Docker鏡像上傳到Docker Hub,可以使用docker push命令。首先,構建你的鏡像,然后使用docker push將其上傳到Docker Hub。例如:

docker build -t <image-name>:tag .
docker push <image-name>:tag

其中:

  • :表示鏡像名;
  • tag:表示鏡像的標簽(可選)。

2.5 導出鏡像為文件

要導出一個 Docker 鏡像為文件,你可以使用 docker save 命令。具體的步驟如下:

  1. 查看可用鏡像

    首先,你可以運行以下命令來查看已安裝的 Docker 鏡像列表:

    docker images
    

    這將列出所有已經下載或構建的 Docker 鏡像。記下你想要導出的鏡像的名稱和標簽。

  2. 導出 Docker 鏡像為文件

    使用 docker save 命令導出鏡像為文件。語法如下:

    docker save -o <輸出文件名.tar> <鏡像名稱:標簽>
    
    • <輸出文件名.tar>:指定導出的文件名,通常使用 .tar 擴展名。
    • <鏡像名稱:標簽>:指定要導出的鏡像的名稱和標簽。

    例如,如果你要導出一個名為 myapp,標簽為 v1.0 的鏡像到名為 myapp_v1.0.tar 的文件中,可以運行以下命令:

    docker save -o myapp_v1.0.tar myapp:v1.0
    

    這將創建一個名為 myapp_v1.0.tar 的文件,其中包含了 myapp:v1.0 鏡像的所有文件和元數據。

  3. 確認導出

    導出過程完成后,你可以確認文件已成功創建,位于當前工作目錄中。你可以運行 ls 命令來查看:

    ls -l myapp_v1.0.tar
    

    這將列出文件的詳細信息,包括文件大小。

現在,你已經成功將 Docker 鏡像導出為一個 .tar 文件。你可以將這個文件傳輸到其他機器或存檔以備將來使用。要在其他機器上導入這個鏡像,可以使用 docker load 命令。例如:

docker load -i myapp_v1.0.tar

這將導入鏡像并使其可在新機器上運行。希望這可以幫助你完成 Docker 鏡像的導出操作。

2.6 將鏡像文件加載到Docker

本節和上一節介紹的內容互為逆過程。

要將 Docker 鏡像文件加載到 Docker,你可以使用 docker load 命令。以下是詳細的步驟:

  1. 將鏡像文件復制到目標機器

    將之前導出的 Docker 鏡像文件(通常是一個 .tar 文件)復制到目標機器上。你可以使用 scprsync 或其他文件傳輸工具來進行復制。

  2. 加載 Docker 鏡像文件

    在目標機器上,使用 docker load 命令來加載鏡像文件。語法如下:

    docker load -i <鏡像文件名.tar>
    
    • <鏡像文件名.tar>:指定要加載的鏡像文件的路徑和名稱。

    例如,如果你要加載名為 myapp_v1.0.tar 的鏡像文件,可以運行以下命令:

    docker load -i myapp_v1.0.tar
    

    這將從文件 myapp_v1.0.tar 中加載鏡像到 Docker

  3. 確認加載

    加載完成后,你可以運行以下命令來驗證鏡像是否已成功加載到 Docker

    docker images
    

    這將列出目標機器上已加載的所有 Docker 鏡像,包括你剛剛加載的鏡像。

2.7 鏡像刪除

要刪除 Docker 鏡像,你可以使用 docker rmi 命令。以下是如何刪除 Docker 鏡像的具體步驟:

  1. 查看已安裝的鏡像

    在執行刪除操作之前,你可以運行以下命令來查看已安裝的 Docker 鏡像列表:

    docker images
    

    這將列出所有已下載或構建的 Docker 鏡像,以及它們的名稱、標簽、大小等信息。確定你想要刪除的鏡像的名稱和標簽。

  2. 刪除 Docker 鏡像

    使用 docker rmi 命令來刪除鏡像。語法如下:

    docker rmi <鏡像名稱:標簽>
    
    • <鏡像名稱:標簽>:指定要刪除的鏡像的名稱和標簽。

    例如,如果要刪除名為 myapp,標簽為 v1.0 的鏡像,可以運行以下命令:

    docker rmi myapp:v1.0
    

    如果要刪除多個鏡像,可以在命令中列出它們,例如:

    docker rmi myapp:v1.0 myapp:v2.0
    

    或者,如果要刪除所有沒有被容器使用的鏡像,可以運行以下命令:

    docker image prune -a
    

    這將刪除所有未被容器使用的鏡像,包括沒有標簽的鏡像。

  3. 確認刪除

    老規矩,刪除完成后,再次運行 docker images 命令來確認是否已成功刪除了鏡像。被刪除的鏡像將不再出現在列表中。

3. 容器

3.1 由鏡像創建容器

類比于VMWare

由鏡像創建容器可以類比于 VMWare 新建虛擬機時需要從選擇一個系統鏡像開始:

在這里插入圖片描述

只不過Docker中的鏡像管理起來更加方便,既可以從一個Dcocker鏡像文件導入Docker,也可以直接從Docker Hub拉取。

Docker Run 命令解析

docker run 命令用于創建和運行 Docker 容器。這個命令非常強大,有許多可用選項,以滿足不同的需求。以下是對 docker run 命令以及其可用選項的全面解析:

docker run [選項] <鏡像名稱:標簽> [命令] [參數]
  • 選項:用于配置容器的各種選項。
  • <鏡像名稱:標簽>:指定要使用的 Docker 鏡像的名稱和標簽。
  • 命令:要在容器內部執行的命令(覆蓋鏡像中的默認命令)。
  • 參數:傳遞給命令的參數。

以下是一些常用的 docker run 命令選項:

  • -d--detach:在后臺模式下運行容器。
  • --name <容器名稱>:為容器指定一個名稱。
  • -p <主機端口>:<容器端口>:將主機端口映射到容器端口。
  • -v <主機目錄>:<容器目錄>:將主機目錄掛載到容器目錄,創建數據卷。
  • -e <環境變量>:設置環境變量。
  • --network <網絡模式>:指定容器的網絡模式。
  • --rm:容器退出后自動刪除容器。
  • -i:交互式模式,通常與 -t 一起使用。
  • -t:為容器分配一個偽終端(TTY)。

除了這些常見選項之外,還有許多其他選項,可以根據需要進一步配置容器。以下是一些其他常用選項:

  • --hostname:設置容器的主機名。
  • --user:指定容器內的用戶。
  • --link:連接到其他容器。
  • --volume-driver:指定容器的數據卷驅動程序。
  • --dns:設置容器的 DNS 服務器。
  • --privileged:授予容器特權,以便執行特定的操作。
  • --restart:在容器退出時自動重啟容器。
  • --cap-add--cap-drop:添加或刪除容器的 Linux 內核功能。
  • --device:允許容器訪問主機上的設備。
  • --ulimit:設置容器的資源限制。

要了解有關 docker run 命令的更多選項和詳細信息,請參閱 Docker 官方文檔或運行以下命令來查看幫助:

docker run --help

使用 docker run 命令可以根據不同的場景和需求創建和運行容器,定制化程度非常高,因此熟悉其可用選項和用法對于有效使用 Docker 非常重要。

基本示例:

假設我們已經使用pull命令拉取了一個名為nginx的docker鏡像。現在使用 docker run 命令部署一個支持HTTP和HTTPS協議的Nginx網站容器。

docker run -d --name my-nginx-container -p 80:80 -p 443:443 --network bridge nginx

-network bridge 部分可以省略,因為在默認情況下,Docker容器會使用橋接網絡模式。

這個命令將創建并在后臺運行一個名為my-nginx-container的Nginx容器,該容器支持HTTP和HTTPS協議,并將主機的端口80和443映射到容器內的相應端口。容器將使用默認的橋接網絡模式,允許從主機訪問Nginx網站。

在這里插入圖片描述

示例:創建tensorflow容器

tensorflow 是一個Google提供的張量運算庫,常用于機器學習相關任務中,使用Docker是其最簡單的環境部署方式。

下載 TensorFlow Docker 鏡像

官方 TensorFlow Docker 鏡像位于 tensorflow/tensorflow Docker Hub 倉庫中。鏡像發布以以下格式進行標記:

標簽描述
latestTensorFlow CPU 二進制鏡像的最新發布版本。默認選擇。
nightlyTensorFlow 鏡像的每夜構建版本。(不穩定)
version指定 TensorFlow 二進制鏡像的版本,例如:2.8.3

每個基本標簽都有添加或更改功能的變體:

標簽變體描述
tag-gpu帶有 GPU 支持的指定標簽發布版本。 (見下文)
tag-jupyter帶有 Jupyter(包括 TensorFlow 教程筆記本)的指定標簽發布版本。

可以同時使用多個變體。例如,以下命令將下載 TensorFlow 發布鏡像到你的機器:

docker pull tensorflow/tensorflow                     # 最新穩定發布版本
docker pull tensorflow/tensorflow:devel-gpu           # 夜間開發版帶有 GPU 支持
docker pull tensorflow/tensorflow:latest-gpu-jupyter  # 帶有 GPU 支持和 Jupyter 的最新發布版
啟動 TensorFlow Docker 容器

要啟動一個已配置 TensorFlow 的容器,請使用以下命令形式:

docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]
使用 CPU-only 鏡像的示例

讓我們使用最新的標記鏡像來驗證 TensorFlow 安裝。Docker 在首次運行時會下載新的 TensorFlow 鏡像:

docker run -it --rm tensorflow/tensorflow \python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

可以看到,在上面運行的 docker run 命令中:

1.-it: 這是兩個選項的組合,用于指定在容器內開啟一個交互式終端(-i 表示交互式,-t 表示為終端分配一個偽終端)。這使得用戶可以與容器進行交互,例如在容器內執行命令;

2.--rm: 這是一個選項,它告訴 Docker 在容器退出時自動刪除容器。這有助于確保容器不會在退出后留下殘留的實例;

3.tensorflow/tensorflow: 這是要運行的 Docker 鏡像的名稱。在這種情況下,它是 TensorFlow 官方鏡像,用于運行 TensorFlow 環境;

4.python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))": 這是在容器內執行的實際命令。它啟動了一個 Python 解釋器,并在其中運行一行 Python 代碼。具體地說,它導入了 TensorFlow 庫,生成一個包含隨機數的矩陣,然后計算這個矩陣的總和并將結果打印出來

讓我們演示一些更多的 TensorFlow Docker 配方。在 TensorFlow 配置的容器內啟動一個 bash shell 會話:

docker run -it tensorflow/tensorflow bash

這個命令中:bash: 這是在容器內執行的實際命令。它啟動了一個bash shell會話,讓用戶可以在容器內執行命令和操作容器的文件系統。

在容器內,可以啟動一個 Python 會話并導入 TensorFlow

要在容器內運行在主機上開發的 TensorFlow 程序,請掛載主機目錄并更改容器的工作目錄(-v hostDir:containerDir -w workDir):

docker run -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow python ./script.py

這個命令的作用是創建一個交互式容器,使用TensorFlow官方鏡像,并將當前主機的工作目錄掛載到容器中的 /tmp 目錄。然后,容器內啟動一個Python解釋器并運行 ./script.py 腳本,允許用戶在容器內執行與TensorFlow相關的Python代碼。一旦命令執行完畢,由于使用了 --rm 選項,容器將被自動刪除,保持環境整潔。其中:

  • -it: 這是兩個選項的組合,用于指定交互式終端。 -i 表示允許交互式輸入,-t 表示為容器分配一個偽終端,使得用戶可以與容器進行交互。
  • --rm: 這是一個選項,它告訴Docker在容器退出時自動刪除容器。這有助于確保容器不會在退出后留下殘留的實例。
  • -v $PWD:/tmp: 這是一個選項,用于將當前主機的工作目錄 ($PWD) 掛載到容器內的 /tmp 目錄。這樣做可以讓容器訪問主機文件系統中的文件,并在容器內進行操作。
  • -w /tmp: 這是一個選項,用于設置容器的工作目錄為 /tmp,這是上一步中掛載的目錄。
  • tensorflow/tensorflow: 這是要運行的Docker鏡像的名稱,這里是TensorFlow官方鏡像。
  • python ./script.py: 這是在容器內執行的實際命令。它啟動了一個Python解釋器,并運行 ./script.py 腳本。這個腳本應該位于容器內的工作目錄 /tmp 中,由于上面的掛載操作,它實際上是主機文件系統中的 ./script.py

當容器內創建的文件暴露給主機時,可能會出現權限問題。通常最好在主機系統上編輯文件。

使用 TensorFlow 的每夜構建版本啟動 Jupyter Notebook 服務器:

docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-jupyter

按照說明操作并在主機的網絡瀏覽器中打開 URL:http://127.0.0.1:8888/?token=…

GPU 支持

Docker 是在 GPU 上運行 TensorFlow 的最簡單方式,因為主機機器只需安裝 NVIDIA? 驅動程序(不需要安裝 NVIDIA? CUDA? Toolkit)。

安裝 Nvidia 容器工具包以在 Docker 中添加 NVIDIA? GPU 支持。nvidia-container-runtime 僅適用于 Linux。有關詳細信息,請參閱 nvidia-container-runtime 平臺支持 FAQ。

檢查是否存在 GPU:

lspci | grep -i nvidia

驗證你的 nvidia-docker 安裝:

docker run --gpus all --rm nvidia/cuda nvidia-smi

注意:nvidia-docker v2 使用 --runtime=nvidia 替代了 --gpus all。nvidia-docker v1 使用 nvidia-docker 別名,而不是 --runtime=nvidia 或 --gpus all 命令行標志。

使用啟用 GPU 的鏡像的示例

下載并運行啟用 GPUTensorFlow 鏡像(可能需要幾分鐘):

docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu \python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

設置啟用 GPU 的鏡像可能需要一些時間。如果反復運行基于 GPU 的腳本,你可以使用 docker exec 重用容器。

使用最新的 TensorFlow GPU 鏡像在容器內啟動一個 bash shell 會話:

docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash

成功:TensorFlow 現在已安裝。請閱讀教程以開始使用。

示例:創建mysql容器

TenflowNginx等一樣,MySQL同樣可以基于Docker安裝。官方提供了已經部署好MySQL數據庫的Docker鏡像。

步驟 1:拉取MySQL鏡像
使用以下命令從Docker Hub上拉取MySQL官方鏡像:

docker pull mysql:latest

這將下載最新版本的MySQL鏡像到你的本地系統。

步驟 2:創建MySQL容器
使用以下命令創建一個MySQL容器。在此示例中,我們將容器命名為 mysql-container,設置了root用戶的密碼為 my-secret-pw,并將主機的端口3306映射到容器的端口3306。

docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 mysql:latest

這將創建并在后臺運行MySQL容器。

這個命令中,創建一個MySQL服務器容器,使其以后臺模式運行。容器被命名為 mysql-container,并設置了 MySQL root 用戶的密碼為 my-secret-pw。此外,主機的端口 3306 被映射到容器的端口 3306,這樣可以通過主機上的端口來訪問容器內的 MySQL 服務器。這個容器將使用官方MySQL鏡像,運行最新版本的 MySQL 服務器。其中:

  • -d: 這個選項表示在后臺模式下運行容器,容器將在后臺運行而不會阻塞終端;
  • --name mysql-container: 這個選項為容器指定了一個名稱,這里是 mysql-container,你可以根據需要自定義容器名稱;
  • -e MYSQL_ROOT_PASSWORD=my-secret-pw: 這個選項通過環境變量設置MySQL服務器的root用戶密碼。在這個示例中,密碼被設置為 my-secret-pw,你可以根據需要選擇不同的密碼;
  • -p 3306:3306: 這個選項將主機的端口3306映射到容器的端口3306。容器內的MySQL服務器默認監聽在端口3306上,這使得可以通過主機上的端口 3306 訪問容器內的MySQL服務器;
  • mysql:latest: 這是要運行的 Docker 鏡像的名稱。在這個示例中,我們使用的是 MySQL 的官方鏡像, latest 表示使用最新版本的MySQL鏡像。

步驟 3:連接到MySQL服務器
你可以使用MySQL客戶端連接到MySQL服務器。在終端中運行以下命令,使用root用戶和之前設置的密碼 my-secret-pw 連接到MySQL服務器:

mysql -h 127.0.0.1 -u root -p

輸入密碼 my-secret-pw 后,你將成功連接到MySQL服務器。

在這里插入圖片描述

可以看到,在截圖中,我拉取了官方的mysql鏡像,運行它時使用“-e MYSQL_ROOT_PASSWORD=123456”設置環境變量MYSQL_ROOT_PASSWORD的值為123456設置MySQL服務器的root用戶密碼。并且暴露了mysql的默認端口(3306),方便容器外部使用它。

通過exec進入到容器系統,在容器內部,使用 mysql -h 127.0.0.1 -u root -p并輸入之前設置的密碼成功登陸了mysql。

3.2 容器和宿主機之間文件拷貝

從宿主機到容器的復制

使用以下命令將宿主機上的文件復制到運行中的容器中(<容器名稱或ID><宿主機文件路徑> 根據實際情況替換):

docker cp <宿主機文件路徑> <容器名稱或ID>:<容器目標路徑>

示例:

docker cp /path/to/host/file.txt my-container:/tmp/file.txt
從容器到宿主機的復制

使用以下命令將容器內的文件復制到宿主機(<容器名稱或ID><容器文件路徑> 根據實際情況替換):

docker cp <容器名稱或ID>:<容器文件路徑> <宿主機目標路徑>

示例:

docker cp my-container:/tmp/file.txt /path/to/host/

3.3 使用數據卷掛載

除了上一小節介紹的使用 docker cp 命令進行文件復制,另一種常見的文件在容器和宿主機之間傳遞方法是通過 數據卷掛載 來實現。

你可以在容器中創建數據卷,并將宿主機上的目錄掛載到該數據卷上。這樣,容器和宿主機可以共享文件。

創建數據卷

使用以下命令創建一個數據卷:

docker volume create my-volume

運行容器并掛載數據卷

運行容器時,使用 -v 選項將數據卷掛載到容器的指定路徑上(<宿主機目錄><容器目標路徑> 根據實際情況替換):

docker run -d --name my-container -v my-volume:<容器目標路徑> image-name

例如:

docker run -d --name my-container -v my-volume:/app my-image

在容器和宿主機之間傳遞文件

現在,你可以在宿主機上將文件復制到數據卷掛載的目錄中,然后容器內的應用程序可以訪問它們。

3.4 共享目錄

共享目錄也是一種在宿主機和容器之間創建共享目錄來實現文件傳遞的方式。這可以通過將宿主機目錄掛載到容器中來實現,類似于數據卷掛載。

  1. 運行容器并掛載共享目錄

    在運行容器時,使用 -v 選項將宿主機的目錄掛載到容器的指定路徑上(<宿主機目錄><容器目標路徑> 根據實際情況替換):

    docker run -d --name my-container -v /path/to/host/directory:/container/target/directory image-name
    

    例如:

    docker run -d --name my-container -v /host-folder:/container-folder my-image
    
  2. 在容器和宿主機之間傳遞文件

    您可以在宿主機上將文件復制到共享目錄,然后容器內的應用程序可以訪問它們。

這些是在Docker容器和宿主機之間進行文件傳遞的幾種常見方法。您可以根據具體的需求選擇最適合您的方法。無論使用哪種方法,都需要謹慎處理文件權限和路徑,以確保文件能夠正確傳遞并在容器內外進行訪問。

3.5 容器管理

容器管理的很多命令都提到過了,比如docker startdocker stop等等,這里做一些回顧和補充。

列出容器

要列出所有正在運行的容器,可以使用docker ps命令:

docker ps

要列出包括停止的容器在內的所有容器,可以添加-a選項:

docker ps -a
查看容器日志

要查看容器的日志輸出,可以使用docker logs命令,后跟容器的名稱或ID:

docker logs my-container
進入容器

要進入正在運行的容器的命令行終端,可以使用docker exec命令:

docker exec -it my-container /bin/bash

其中:

  • -it選項表示交互式終端。
  • my-container是容器的名稱或ID。
  • /bin/bash是要運行的shell。
停止容器

要停止一個正在運行的容器,可以使用docker stop命令,后跟容器的名稱或ID:

docker stop my-container
啟動容器

要啟動一個已停止的容器,可以使用docker start命令,后跟容器的名稱或ID

docker start my-container
刪除容器

要刪除一個容器,可以使用docker rm命令,后跟容器的名稱或ID

docker rm my-container
清理無用容器

Docker中有時會留下未使用的容器。要清理這些無用容器,可以使用以下命令:

docker container prune
監視容器

要監視容器的資源使用情況,可以使用docker stats命令,后跟容器的名稱或ID

docker stats my-container

4. 結論

Docker 已經成為現代軟件開發和運維的一個重要工具。它通過容器化技術,提供了一種高效、一致和可移植的方式來部署和管理應用。通過學習本文,讀者可以掌握如何使用 Docker CLI 的基本用法來有效地管理 Docker 容器和鏡像的管理,實現快速部署和運行應用程序的目的。
Docker CLI 提供了豐富的命令和選項,使得用戶可以輕松地執行各種操作,如查找鏡像、拉取鏡像、推送鏡像、創建容器、文件拷貝、數據卷掛載等。這些功能和操作能夠幫助用戶更好地利用 Docker 技術,提高工作效率和便捷性。
總的來說,掌握 Docker CLI 的基本用法對于開發人員和系統管理員來說是非常重要的。通過深入了解和實踐這些命令,用戶可以更好地利用 Docker 技術來構建、部署和管理他們的應用程序,從而提高開發和部署的效率,加快應用交付的速度。希望本文能夠幫助讀者更好地理解和應用 Docker CLI,為其日常工作帶來便利和效益。


如果你對Docker技術還不是很了解,可以考慮從本系列第一篇文章開始閱讀:《Docker技術概論(1):Docker與虛擬化技術比較》。

如果你覺得本文對你有所幫助,請在文章處點贊支持。 雖然這不會使我從中獲得經濟利益,但是你的贊是繼續分享的巨大動力&^_^&

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

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

相關文章

Python實現PPT演示文稿中視頻的添加、替換及提取

無論是在教室、會議室還是虛擬會議中&#xff0c;PowerPoint 演示文稿都已成為一種無處不在的工具&#xff0c;用于提供具有影響力的可視化內容。PowerPoint 提供了一系列增強演示的功能&#xff0c;在其中加入視頻的功能可以大大提升整體體驗。視頻可以傳達復雜的概念、演示產…

ArkTS中的路由跳轉和HTTP數據請求

路由跳轉 步驟1&#xff1a;找到箭頭所指的文件&#xff0c;在其中添加已創建的頁面 步驟2&#xff1a;導包 步驟3&#xff1a; HTTP數據請求 步驟1&#xff1a;導包 > import http from ohos.net.http; 步驟2&#xff1a;&#xff08;如果需要在頁面加載前請求&#xf…

TcpServer服務器管理模塊(模塊十)

目錄 類功能 類定義 類實現 編譯測試 server.cc gdb測試斷點 忽略SIGPIPE信號 類功能 類定義 // TcpServer服務器管理模塊(即全部模塊的整合) class TcpServer { private:uint64_t _next_id; // 這是一個自動增長的連接IDint _port;i…

Linux學習-C語言-運算符

目錄 算術運算符&#xff1a; - * /:不能除0 %:不能對浮點數操作 &#xff1a;自增與運算符 i&#xff1a;先用再加 i:先加再用 --&#xff1a;自減運算符 常量&#xff0c;表達式不可以&#xff0c;--&#xff0c;變量可以 賦值運算符 三目運算符 逗號表達式 size…

alpine創建lnmp環境alpine安裝nginx+php5.6+mysql

前言 制作lnmp環境&#xff0c;你可以在alpine基礎鏡像中安裝相關的服務&#xff0c;也可以直接使用Dockerfile創建自己需要的環境鏡像。 注意&#xff1a;提前確認自己的alpine版本&#xff0c;本次創建基于alpine3.6進行創建&#xff0c;官方在一些版本中刪除了php5 1、拉取…

JS正則02——js正則表達式中常用的方法、常見修飾符的使用詳解以及各種方法使用情況示例

JS正則02——js正則表達式中常用的方法、常見修飾符的使用詳解以及各種方法使用情況示例 1. 前言1.1 簡介1.2 js正則特殊字符即使用示例 2. 創建正則表達式的方式2.1 兩種創建正則表達式的方式2.2 關于修飾符 3. 正則表達式中常用的方法3.1 test() 方法——正則表達式對象的方法…

Vue之監測數據的原理(對象)

大家有沒有想過&#xff0c;為什么vue可以監測到數據發生改變&#xff1f;其實底層借助了Object.defineProperty&#xff0c;底層有一個Observer的構造函數 讓我為大家簡單的介紹一下吧&#xff01; 我用對象為大家演示一下 const vm new Vue({el: "#app",data: {ob…

Python列表操作函數

在Python中&#xff0c;列表&#xff08;list&#xff09;是一種可變的數據類型&#xff0c;它包含一系列有序的元素。Python提供了一系列內置的函數和方法來操作列表。以下是一些常用的Python列表操作函數和方法&#xff1a; 列表方法 append(x) 將元素x添加到列表的末尾。 …

文獻速遞:帕金森的疾病分享--多模態機器學習預測帕金森病

文獻速遞&#xff1a;帕金森的疾病分享–多模態機器學習預測帕金森病 Title 題目 Multi-modality machine learning predicting Parkinson’s disease 多模態機器學習預測帕金森病 01 文獻速遞介紹 對于漸進性神經退行性疾病&#xff0c;早期和準確的診斷是有效開發和使…

Linux按鍵輸入實驗-對按鍵驅動進行測試

一. 簡介 前面學習在設備樹文件中創建按鍵的設備節點,并實現對按鍵驅動代碼的編寫,文章地址如下:Linux按鍵輸入實驗-創建按鍵的設備節點-CSDN博客Linux按鍵輸入實驗-按鍵的字符設備驅動代碼框架-CSDN博客Linux按鍵輸入實驗-按鍵的GPIO初始化-CSDN博客 本文對所實現的按鍵驅…

【精品】集合list去重

示例一&#xff1a;對于簡單類型&#xff0c;比如String public static void main(String[] args) {List<String> list new ArrayList< >();list.add("aaa");list.add("bbb");list.add("bbb");list.add("ccc");list.add(…

網絡工程師必備的網絡端口大全(建議收藏)

端口是一種數字標識&#xff0c;用于在計算機網絡中進行通信&#xff0c;你完全可以把端口簡單的理解為是計算機和外界通訊交流的出口。但在網絡技術中&#xff0c;端口一般有兩種含義&#xff1a; &#xff08;1&#xff09;硬件設備中的端口 如交換機、路由器中用于鏈接其他…

用stream流將list轉為map

用stream流將list轉為map 1、將list轉為Map<Long, List> 按照spaceId分組&#xff0c;spaceId相同的為一組數據&#xff1a; List<BasEvaluationPriceResultDto> list new ArrayList(); Map<Long, List<BasEvaluationPriceResultDto>> priceResult…

“金三銀四”招聘季,大廠爭招鴻蒙人才

在金三銀四的招聘季中&#xff0c;各大知名互聯網企業紛紛加入了對鴻蒙人才的爭奪戰。近日&#xff0c;包括淘寶、京東、得物等在內的知名APP均宣布啟動鴻蒙星河版原生應用開發計劃。這一舉措不僅彰顯了鴻蒙生態系統的迅猛發展&#xff0c;還催生了人才市場的繁榮景象。據數據顯…

遙感影像處理(ENVI+ChatGPT+python+ GEE)處理高光譜及多光譜遙感數據

遙感技術主要通過衛星和飛機從遠處觀察和測量我們的環境&#xff0c;是理解和監測地球物理、化學和生物系統的基石。ChatGPT是由OpenAI開發的最先進的語言模型&#xff0c;在理解和生成人類語言方面表現出了非凡的能力。本文重點介紹ChatGPT在遙感中的應用&#xff0c;人工智能…

vue3學習 【4】ref和reactive的使用并于ts結合

使用ref聲明一個響應式對象并使用 <script lang"ts" setup> import { ref } from vue; const message ref("HelloWorld") message.value"被修改了啊~~" </script> <template>{{ message }} </template>ref() 接收參數…

Vue——攜帶參數跳轉路由

Vue學習之——跳轉路由 前情回顧 當我們進行點擊修改時&#xff0c;會進行跳轉到修改頁面&#xff0c;為了完成回顯數據&#xff08;根據對應id查找&#xff09;&#xff0c;我們需要攜帶對應選擇中的id跳轉到修改頁面&#xff0c;讓其進行查找回顯 學習useRoute和useRoute…

webstorm2023.3.4安裝與破解

WebStorm安裝步驟 打開JetBrains官方網站&#xff08;https://www.jetbrains.com/webstorm/&#xff09; 運行.exe 選擇安裝路徑 第一個意思是是否創建桌面快捷方式&#xff0c;可根據需要選擇&#xff1b;第二個.js .css .html勾選后之后js css html文件默認會用webstor…

AI Agent

目錄 一、什么是Agent 二、什么是MetaGPT【多智能體框架介紹】 三、MetaGPT的背景 一、什么是Agent 智能體 LLM觀察思考行動記憶 Agent&#xff08;智能體&#xff09; 一個設置了一些目標或任務&#xff0c;可以迭代運行的大型語言模型。這與大型語言模型&#xff08;LLM&am…

985機械研一轉碼,java還是c++?

985機械研一轉碼&#xff0c;java還是c&#xff1f; 在開始前我分享下我的經歷&#xff0c;我剛入行時遇到一個好公司和師父&#xff0c;給了我機會&#xff0c;一年時間從3k薪資漲到18k的&#xff0c; 我師父給了一些 電氣工程師學習方法和資料&#xff0c;讓我不斷提升自己&…