?docker?build
# 1. 基本構建命令(使用當前目錄的 Dockerfile)
docker build .# 2. 指定 Dockerfile 路徑和構建上下文
docker build -f /path/to/Dockerfile /path/to/build/context# 3. 為鏡像設置名稱和標簽
docker build -t my-image:latest .# 4. 設置構建參數(ARG 變量)
docker build --build-arg APP_VERSION=1.0.0 -t my-app .# 5. 使用特定目標階段(多階段構建)
docker build --target builder-stage -t my-builder .# 6. 不緩存構建過程(強制重新執行所有步驟)
docker build --no-cache -t fresh-image .# 7. 移除中間容器(構建成功后自動刪除)
docker build --rm=true -t clean-image .# 8. 設置內存限制和 CPU 配額
docker build --memory=1g --cpus=2.0 -t resource-limited .# 9. 使用特定平臺構建(跨平臺構建)
docker build --platform linux/arm64 -t arm-image .# 10. 高級用法:構建時傳遞 SSH 密鑰
docker build --ssh default -t ssh-image .# 11. 壓縮構建上下文(減少傳輸大小)
docker build --compress -t compressed-build .# 12. 設置超時時間(防止卡死)
docker build --timeout=30m -t safe-build .# 13. 組合使用示例:完整構建命令
docker build \-t my-registry/app:v2 \ # 鏡像名稱和標簽-f dockerfiles/prod.Dockerfile \ # 指定 Dockerfile--build-arg NODE_ENV=production \ # 構建參數--target runtime-stage \ # 多階段目標--no-cache \ # 禁用緩存--platform linux/amd64 \ # 目標平臺--memory=2g \ # 內存限制. # 構建上下文
參數 | 說明 |
---|
-t ?/?--tag | 設置鏡像名稱和標簽(格式:name:tag ,可多次使用) |
-f ?/?--file | 指定 Dockerfile 路徑(默認:PATH/Dockerfile ) |
--build-arg | 傳遞構建參數(覆蓋 Dockerfile 中的?ARG ) |
--target | 多階段構建時指定目標階段 |
--no-cache | 禁用構建緩存(從頭開始構建) |
--rm | 構建成功后刪除中間容器(默認:true ) |
--platform | 設置目標平臺(如?linux/amd64 ,?linux/arm64 ) |
--compress | 使用 gzip 壓縮構建上下文 |
--ssh | 允許構建時訪問 SSH 代理(安全訪問私有倉庫) |
--memory | 設置構建容器的內存限制 |
--cpus | 設置 CPU 配額(如?1.5 ?表示 1.5 個 CPU 核心) |
--timeout | 設置構建超時時間(單位:s /m /h ) |
. | 構建上下文路徑(決定?COPY /ADD ?的文件范圍) |
docker?push
# 1. 基本推送命令(推送到 Docker Hub)
docker push username/image-name:tag# 2. 推送到私有倉庫(需先登錄)
docker push registry.example.com:5000/my-app:v1.0# 3. 推送多個標簽(需分別執行)
docker push username/image-name:latest
docker push username/image-name:v1.2# 4. 使用不同格式的鏡像標識
docker push my-image-id # 使用鏡像ID推送(不推薦)
docker push my-image@sha256:abc123... # 使用摘要推送# 5. 強制推送(覆蓋已有鏡像)
docker push --force username/image-name:latest# 6. 禁用內容信任(開發環境使用)
docker push --disable-content-trust my-private-reg/image# 7. 組合使用示例
docker tag local-image:dev username/prod-image:v2.1 # 先打標簽
docker push username/prod-image:v2.1 # 再推送# 8. 推送多平臺鏡像(需用 buildx 構建)
docker buildx build --platform linux/amd64,linux/arm64 -t username/multi-arch-image:latest --push .
參數 | 說明 |
---|
--disable-content-trust | 跳過鏡像簽名驗證(默認開啟) |
--quiet ?/?-q | 靜默模式(只輸出錯誤信息) |
--force ?/?-f | 強制覆蓋遠程同名鏡像(謹慎使用) |
--all-tags ?/?-a | 注意:docker push 不支持此參數 |
?docker?login
# 登錄默認 Docker Hub 倉庫(交互式輸入認證信息)
docker login
# 注釋:
# 執行后需手動輸入用戶名、密碼
# 登錄憑證默認保存在 `~/.docker/config.json`# 指定用戶名登錄 Docker Hub(密碼手動輸入)
docker login -u your_username
# 注釋:
# -u 指定用戶名
# 執行后會提示輸入密碼(避免密碼出現在命令歷史)# 完整認證登錄私有倉庫
docker login -u user -p passwd registry.example.com:5000
# 注釋:
# -p 直接提供密碼(注意安全隱患)
# registry.example.com:5000 指定私有倉庫地址
# 適合自動化腳本(但需確保密碼安全)# 從文件讀取密碼登錄(避免密碼暴露)
cat ~/password.txt | docker login -u user --password-stdin registry.example.com
# 注釋:
# --password-stdin 從標準輸入讀取密碼
# cat 命令將密碼文件內容通過管道傳遞
# 避免密碼被記錄在歷史命令或日志中# 登錄第三方公共倉庫
docker login -u token_username -p access_token ghcr.io
# 注釋:
# ghcr.io GitHub Container Registry
# access_token 通常為平臺生成的訪問令牌
# 適用于 GitHub/GitLab 等容器服務# 退出當前倉庫登錄
docker logout registry.example.com
# 注釋:
# 刪除本地存儲的指定倉庫憑證
# 不指定倉庫則默認清除 Docker Hub 登錄狀態
?docker?logout
# 登出默認 Docker Hub 倉庫
docker logout
# 注釋:清除當前用戶登錄 Docker Hub 的憑證 (~/.docker/config.json)# 登出私有倉庫(指定倉庫地址)
docker logout registry.example.com:5000
# 注釋:
# 清除指定私有倉庫的登錄憑證
# 格式:倉庫域名/IP + 端口號(非默認端口必須指定)# 登出 GitHub Container Registry
docker logout ghcr.io
# 注釋:
# 清除 GitHub 容器倉庫的憑證
# 適用于第三方容器倉庫(GitLab 對應 gitlab.example.com)# 登出所有倉庫(需手動實現)
# 注釋:Docker 沒有直接清除所有憑證的命令,需手動刪除配置文件
rm ~/.docker/config.json
# 警告:此操作將刪除所有容器倉庫的登錄憑證!