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,簡書,博客園,慕課,51CTO,helloworld,騰訊開發者社區,阿裡開發者社區
看完如果覺得有幫助,歡迎點贊、收藏和關註