Docker學習路線11:Docker命令行

来源:https://www.cnblogs.com/xiaowange/archive/2023/07/25/17581287.html
-Advertisement-
Play Games

Docker CLI (命令行界面) 是一個強大的工具,可讓您與 Docker 容器、映像、捲和網路進行交互和管理。它為用戶提供了廣泛的命令,用於在其開發和生產工作流中創建、運行和管理 Docker 容器和其他 Docker 資源。 ### 安裝 要開始使用 Docker CLI,您需要在電腦上安 ...


Docker CLI (命令行界面) 是一個強大的工具,可讓您與 Docker 容器、映像、捲和網路進行交互和管理。它為用戶提供了廣泛的命令,用於在其開發和生產工作流中創建、運行和管理 Docker 容器和其他 Docker 資源。

安裝

要開始使用 Docker CLI,您需要在電腦上安裝 Docker。您可以從 Docker 文檔的官方安裝指南中按照您所使用的操作系統進行安裝。

基本命令

以下是一些基本的 Docker CLI 命令,供您熟悉:

  • docker run:從 Docker 映像創建並啟動容器
  • docker container:列出正在運行的容器
  • docker image:列出系統中所有可用的映像
  • docker pull:從 Docker Hub 或其他註冊表拉取映像
  • docker push:將映像推送到 Docker Hub 或其他註冊表
  • docker build:從 Dockerfile 構建映像
  • docker exec:在正在運行的容器中運行命令
  • docker logs:顯示容器的日誌

Docker Run 選項

docker run 是 Docker CLI 中最重要的命令之一。您可以使用各種選項自定義容器的行為,例如:

  • d, --detach:在後臺運行容器
  • e, --env:為容器設置環境變數
  • v, --volume:綁定掛載捲
  • p, --publish:將容器的埠發佈到主機
  • name:為容器指定名稱
  • restart:指定容器的重啟策略
  • rm:容器退出時自動刪除容器

Dockerfile

Dockerfile 是一個包含構建 Docker 映像的指令的腳本。您可以使用 Docker CLI 使用 Dockerfile 構建、更新和管理 Docker 映像。

以下是 Dockerfile 的一個簡單示例:

# Set the base image to use
FROM alpine:3.7
# Update the system and install packages
RUN apk update && apk add curl
# Set the working directory
WORKDIR /app
# Copy the application file
COPY app.sh .
# Set the entry point
ENTRYPOINT ["./app.sh"]

要構建映像,請使用以下命令:

docker build -t my-image .

Docker Compose

Docker Compose 是一個 CLI 工具,用於使用 YAML 文件定義和管理多容器 Docker 應用程式。它與 Docker CLI 協作,提供了一種一致的方式來管理多個容器及其依賴項。

使用官方的安裝指南安裝 Docker Compose,然後您可以創建一個 docker-compose.yml 文件來定義和運行多容器應用程式:

version: '3'
services:  
web:    
image: webapp-image    
ports:      - "80:80"  
database:    
image: mysql    
environment:      - MYSQL_ROOT_PASSWORD=my-secret-pw

使用以下命令運行應用程式:

docker-compose up

總之,Docker CLI 是管理 Docker 容器和資源的強大而多才多藝的工具。一旦熟悉其命令和功能,您將能夠輕鬆開發、維護和部署使用 Docker 的應用程式。

Docker鏡像

Docker鏡像是一種輕量級、獨立、可執行的軟體包,其包含了運行應用程式所需的所有組件。這些組件包括:依賴項、庫、運行時、系統工具和代碼等,以確保應用程式在不同的環境中可以保持一致地運行。

Docker鏡像是使用Dockerfile進行構建和管理的。Dockerfile是一個包含了創建Docker鏡像所需指令的腳本,提供了一個逐步設置應用程式環境的指南。

使用Docker鏡像

Docker CLI提供了多個命令來管理和使用Docker鏡像。其中一些重要的命令包括:

  • docker image ls:列出本地系統上所有可用的鏡像。
  • docker build:從Dockerfile構建鏡像。
  • docker image rm:刪除一個或多個鏡像。
  • docker pull:從註冊表(如Docker Hub)將鏡像拉到本地系統。
  • docker push:將鏡像推送到倉庫。

例如,要從Docker Hub拉取官方的Ubuntu鏡像,可以運行以下命令:

docker pull ubuntu:latest

拉取鏡像後,可以使用docker run命令創建和運行一個使用該鏡像的容器:

docker run -it ubuntu:latest /bin/bash

這個命令將創建一個新的容器,並使用/bin/bash shell在容器內啟動一個互動式會話。

共用鏡像

Docker鏡像可以使用容器註冊表(如Docker Hub、Google Container Registry或Amazon Elastic Container Registry(ECR))共用和分發。一旦將您的鏡像推送到註冊表中,其他人就可以輕鬆地訪問和使用它們。

要共用您的鏡像,您首先需要使用適當的命名格式對其進行標記:

docker tag <image-id> <username>/<repository>:<tag>

然後,您可以使用以下命令將標記的鏡像推送到註冊表中:

docker push <username>/<repository>:<tag>

總之,Docker鏡像是Docker生態系統中不可或缺的一部分,允許開發人員打包其應用程式、輕鬆地共用它們,併在不同的環境中確保一致性。通過理解Docker鏡像和管理它們的命令,您可以利用容器化的力量,增強您的開發工作流程。在您的開發過程中使用Docker鏡像可以大大提高開發效率,減少開發過程中的問題,讓您能夠更好地專註於應用程式的核心開發。

容器

容器可以被視為輕量級的、獨立的可執行軟體包,包括運行所需的所有東西,包括代碼、運行時、庫、環境變數和配置文件。容器將軟體與其環境隔離開來,確保其在不同環境下工作一致。

為什麼使用容器?

  • 可移植性:容器確保應用程式在不同平臺上一致工作,無論是開發人員的筆記本電腦還是生產伺服器。這消除了“它在我的機器上運行”的問題。
  • 效率:容器很輕量級,因為它們使用共用資源,沒有完整操作系統的開銷。這使得啟動時間更快,減少資源使用。
  • 可擴展性:容器可以根據工作量輕鬆地進行縮放,因此非常適合分散式應用程式和微服務。
  • 一致性:容器使得開發人員、QA 和運維團隊在整個應用程式生命周期中擁有一致的環境,從而加快了部署流程。
  • 安全性:容器提供了一定程度的隔離,使其與其他容器和底層主機系統隔離開來,有助於維護應用程式的安全性。

使用 Docker CLI 工作

Docker CLI 提供了多個命令,可幫助您創建、管理和與容器交互。一些常用命令包括:

  • docker run:用於創建和啟動新容器。
  • docker container ls:列出運行中的容器。
  • docker container stop:停止運行中的容器。
  • docker container rm:刪除已停止的容器。
  • docker exec:在運行中的容器中執行命令。
  • docker logs:獲取容器的日誌,有助於調試問題。

Docker捲

Docker捲是一種用於存儲Docker容器生成和使用的數據的機制。它們允許您將數據與容器本身分開,從而輕鬆備份、遷移和管理持久性數據。

捲的重要性

Docker容器本質上是暫時的,這意味著它們可以輕鬆地停止、刪除或替換。儘管這對應用程式開發和部署非常有利,但處理持久性數據時會帶來挑戰。這就是捲的作用。它們提供了一種將數據存儲和管理與容器的生命周期分開的方法。

捲的類型

Docker中有三種類型的捲:

  • 主機捲:它們存儲在主機機器的文件系統中,通常位於/var/lib/docker/volumes目錄中。這些可以很容易地訪問,但可能會帶來可移植性或文件系統相容性問題。
  • 匿名捲:這些是在運行容器時沒有指定捲時自動生成的。它們的ID由Docker生成,也存儲在主機機器的文件系統中。
  • 命名捲:與匿名捲類似,命名捲也存儲在主機機器的文件系統中。但是,您可以提供自定義名稱,這樣在其他容器中引用或備份時更容易。

使用Docker CLI管理捲

Docker CLI提供了各種命令來管理捲:

  • docker volume create: 使用給定的名稱創建新捲。
  • docker volume ls: 列出系統中的所有捲。
  • docker volume inspect: 提供有關特定捲的詳細信息。
  • docker volume rm: 刪除捲。
  • docker volume prune: 刪除所有未使用的捲。

要在容器中使用捲,可以在docker run命令期間使用-v--volume標誌。例如:

docker run -d --name my-container -v my-named-volume:/var/lib/data my-image

此命令使用“my-image”映像創建一個名為“my-container”的新容器,併在容器內部將“my-named-volume”捲掛載到/var/lib/data路徑。

Docker 網路

Docker 網路提供了管理容器通信的重要方法。它允許容器使用各種網路驅動程式相互通信並與主機機器通信。通過理解和利用不同類型的網路驅動程式,您可以設計容器網路以適應特定的場景或應用程式需求。

網路驅動程式

Docker 中有幾個可用的網路驅動程式。這裡,我們將介紹四個最常見的驅動程式:

  • bridge:容器的預設網路驅動程式。它創建了一個私有網路,容器可以相互通信並與主機機器通信。在此網路上的容器可以通過主機網路訪問外部資源。
  • host:該驅動程式取消了網路隔離並允許容器共用主機的網路。在網路性能至關重要的情況下,它非常有用,因為它最小化了容器網路的開銷。
  • none:該網路驅動程式禁用容器網路。使用此驅動程式的容器在沒有任何網路訪問的隔離環境下運行。
  • overlay:該網路驅動程式使部署在不同主機上的容器能夠相互通信。它專為 Docker Swarm 設計,並且非常適合多主機或基於集群的容器部署。

管理 Docker 網路

Docker CLI 提供了各種命令來管理網路。以下是一些有用的命令:

  • 列出所有網路:docker network ls
  • 檢查網路:docker network inspect <network_name>
  • 創建新網路:docker network create --driver <driver_type> <network_name>
  • 將容器連接到網路:docker network connect <network_name> <container_name>
  • 將容器與網路斷開連接:docker network disconnect <network_name> <container_name>
  • 刪除網路:docker network rm <network_name>

最後

為了方便其他設備和平臺的小伙伴觀看往期文章,鏈接奉上:

公眾號 Let us Coding牛客知乎開源中國CSDN思否掘金InfoQ簡書博客園慕課51CTOhelloworld騰訊開發者社區阿裡開發者社區

看完如果覺得有幫助,歡迎點贊、收藏關註


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文分享自華為雲社區《一文帶你全面瞭解openGemini》,作者: 華為雲社區精選。 7月19日,openGemini社區聯合華為雲DTT(技術公開直播課欄目)共同舉辦了一期主題為《openGemini時序資料庫應用場景與技術實踐》的直播活動,華為雲開源DTSE技術佈道師 & openGemini ...
  • 玖章算術公司研發了新一代雲原生數據管理平臺NineData,系統採用最新的雲原生+AIGC技術,支持對內部員工和外部ISV伙伴做細粒度的資料庫許可權配置和操作審計,提供靈活的生產資料庫操作自動化審批流程,內置了數百個資料庫安全操作規範和敏感數據保護能力,可以幫助企業規避低級誤操作,降低數據泄露和刪庫跑... ...
  • 一、前言 在攜程國際化戰略背景下,海外業務將成為新的發力點,為了保證用戶高品質的服務體驗,底層數據勢必需要就近服務業務應用。一套標準且普適的數據複製解決方案能夠提升業務決策效率,助力業務更快地觸達目標用戶。 DRC (Data Replicate Center) 作為攜程內部資料庫上雲標準解決方案, ...
  • ## 🏰 腳手架文件結構 """ ├── node_modules ├── public │ ├── favicon.ico: 頁簽圖標 │ └── index.html: 主頁面 ├── src │ ├── assets: 存放靜態資源 │ │ └── logo.png │ │── compon ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 從computed的特性出發 computed最耀眼的幾個特性是啥? 1. 依賴追蹤 import { reactive, computed } from 'vue' const state = reactive({ a: 1, b: 2 ...
  • #【後端面經-Spring】Spring簡介 [TOC](【後端面經-Spring】Spring簡介) ## 1. Spring簡介 Spring是為了簡化java項目開發設計的一款設計層面開源框架,其設計目的就是為了“簡化開發”。 它使用分層架構,解決業務邏輯層和各層之間的松耦合。 核心特性: - ...
  • antv-x6是一個功能強大、可擴展性高的可視化工具,提供了一系列開箱即用的交互軟體和簡單易用的節點定製能力,能夠幫助使用者便捷地創建流程圖、ER圖等交互性較強的應用。本次分享介紹了x6的基本功能,更多高級功能有待我們進一步學習和探索。 ...
  • 高可用的三大利器是熔斷、限流和降級。它們都是在分散式系統中用於保障系統穩定性和可用性的重要策略。熔斷(Circuit Breaker):熔斷是一種防止故障擴散的機制。當一個服務出現故障或超時,熔斷器會打開並快速失敗,拒絕後續的請求,避免請求堆積和資源耗盡。熔斷器會暫時屏蔽該服務,併在一段時間後嘗試恢... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...