構建 Go 可執行文件鏡像 | 探索輕量級 Docker 基礎鏡像(我應該選擇哪個 Docker 鏡像?)

文章目錄

    • 構建 Go 可執行文件鏡像
    • 典型用途
    • 探索輕量級 Docker 基礎鏡像

構建 Go 可執行文件鏡像

golang:1.23.0-bullseye 是官方 Go 鏡像的一個 “build-stage” 版,用來構建 Go 可執行文件,而不是把它當成最終運行鏡像。

dockerhub官方:https://hub.docker.com/layers/library/golang/1.23.0-bullseye/images/sha256-6951a314f8134f3de569728bcb92d8717a79317e75f0e20486e1d8a120b1589b

docker Hub 上 golang 鏡像的官方頁面會明確說明基礎鏡像。

查看鏡像信息

% docker run --rm golang:1.23.0-bullseye cat /etc/os-releaseUnable to find image 'golang:1.23.0-bullseye' locally
1.23.0-bullseye: Pulling from library/golang
d82c4492ee91: Pull complete 
7bf248fd6988: Pull complete 
01b216df41d3: Pull complete 
f6321cc2f68c: Pull complete 
73f9ed64c249: Pull complete 
8057aa54287e: Pull complete 
4f4fb700ef54: Pull complete 
Digest: sha256:ea90fd4edb6db8b5cf8751fe5eeb08a25549090f48d08c7f3fa91dae648308b6
Status: Downloaded newer image for golang:1.23.0-bullseye
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

構建 Go 可執行文件鏡像,在容器里完整復現 Debian Bullseye + Go 1.23.0 的編譯環境,用來構建 Go 可執行文件,而不是把它當成最終運行鏡像。

? 錯誤姿勢:直接拿它當最終鏡像,鏡像 1 GB+,暴露一堆編譯工具,攻擊面大,體積臃腫。

典型用途

? 正確姿勢:多階段構建里的 builder 階段

# ---- 1. 編譯階段 ----
FROM golang:1.23.0-bullseye AS builderWORKDIR /src
COPY go.mod go.sum ./
RUN go mod downloadCOPY . .
# 如果依賴 cgo,需要 gcc;純靜態可執行文件可加 CGO_ENABLED=0
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o app .# ---- 2. 運行階段 ----
FROM debian:11-slim
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /src/app /usr/local/bin/app
ENTRYPOINT ["app"]

debian:11-slim(僅當確實需要 glibc 或 apt)
適用場景:適用于那些希望保持Debian穩定性同時又需要較小鏡像的應用。
適用:

  • 你的二進制 動態鏈接 glibc(CGO_ENABLED=1 且沒靜態鏈接)。
  • 需要 apt 安裝額外 .deb 包(如 libxml2、libpq 等)。

探索輕量級 Docker 基礎鏡像

探索輕量級 Docker 基礎鏡像
原文鏈接: https://blogs.mohibulalam.xyz/exploring-lightweight-docker-base-images-alpine-slim-and-debian-releases-bookworm-bullseye-688f88067f4b
Alpine、Slim、Bookworm、Bullseye、Stretch、Jessie — 我應該選擇哪個 Docker 鏡像?
原文鏈接:https://cloud.tencent.com/developer/article/2457031

在這里插入圖片描述
Debian Linux 提供了多個發行版,每個版本都有自己的一組特性、軟件包和更新。選擇合適的 Debian 發行版作為 Docker 基礎鏡像取決于你的應用程序的需求。

  • Alpine Linux 是一種輕量級 Linux 發行版,以其小尺寸和對安全性的關注而聞名。它通常用作創建小型高效 Docker 容器的基礎鏡像。由于其極簡主義特性,Alpine 鏡像往往比基于 Debian 的鏡像小得多。

  • “Slim” Docker 鏡像,通常被稱為“精簡”鏡像,是基于特定發行版(如 Debian)構建的,但通過刪除非必要組件進行了優化,從而縮小了鏡像大小。創建這些鏡像的目的是為了減小鏡像大小并提高效率,同時仍然保持運行應用程序所需的必要功能。

    • 大小優化: 輕量級鏡像通過省略非必要組件來實現精簡,例如未使用的軟件包、庫和文檔。 這種大小的減少可以加快拉取速度和容器啟動速度。
    • 功能完整性: 盡管進行了精簡,Slim 鏡像仍保留了大多數應用程序的核心功能。關鍵庫和工具得以保留,以確保常用軟件的無縫運行。
    • 更大的基礎,更精簡的構建: 精簡鏡像通常源于像 Debian 這樣的大型發行版。 通過去除多余的組件,它們在效率和功能之間取得了平衡。
    • 兼容性警告: 雖然尺寸縮小是一大優勢,但請注意兼容性。依賴于已省略的庫或應用程序的工具可能會遇到問題。使用精簡鏡像進行全面測試至關重要。

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

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

相關文章

鏈表算法之【回文鏈表】

目錄 LeetCode-234題 LeetCode-234題 給定一個單鏈表的頭節點head,判斷該鏈表是否為回文鏈表,是返回true,否則返回false class Solution {/*** 這里的解題思路為:* (1)、找中間節點* (2)、反轉鏈表* (3)、遍歷比較節點值是否相…

Playwright Python 教程:網頁自動化

1. 常用工具簡介及對比主流網頁自動化工具對比工具支持語言瀏覽器支持特點適用場景PlaywrightPython, JS, .NETChromium, Firefox, WebKit跨瀏覽器、速度快、API簡潔自動化測試、爬蟲、網頁操作Selenium多語言所有主流瀏覽器歷史悠久、社區大傳統自動化測試、兼容性測試Puppete…

動態數組:ArrayList的實現原理

動態數組:ArrayList的實現原理 大家好!今天我們來聊聊Java集合框架中一個非常重要的數據結構——ArrayList。就像我們日常生活中使用的伸縮收納盒一樣,ArrayList可以根據需要自動調整大小,既方便又高效。那么它是如何實現這種&quo…

MIPI DSI(五) DBI 和 DPI 格式

關于 DBI 和 DPI 這兩種格式的詳細協議內容,請參考《MIPI Alliance Standard for Display Bus Interface(V2.0) .pdf》和《MIPI Alliance Standard for Display Pixel Interface(DPI- 2) .pdf》這兩份文檔。首先先了解…

FRP Ubuntu 服務端 + MacOS 客戶端配置

一、服務端配置 1、下載frp并解壓 # 創建目錄并進入 mkdir -p /opt/frp && cd /opt/frp # 下載最新版(替換URL為GitHub發布頁最新版本) wget https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_amd64.tar.gz # 解壓 …

Video Python(Pyav)解碼二

在 PyAV 中,input_container.decode() 和 input_container.demux() 是兩種處理視頻流數據的不同方法,它們分別適用于不同的場景。下面通過代碼示例和對比來詳細說明它們的用法和區別。1. input_container.decode()功能直接解碼:從容器中讀取數…

閑庭信步使用圖像驗證平臺加速FPGA的開發:第十六課——圖像五行緩存的FPGA實現

(本系列只需要modelsim即可完成數字圖像的處理,每個工程都搭建了全自動化的仿真環境,只需要雙擊top_tb.bat文件就可以完成整個的仿真,大大降低了初學者的門檻!!!!如需要該系列的工程…

頭文件與源文件及區別

使用場景上的區別頭文件:變量的聲明,函數的聲明,宏的定義,類的定義等。 源文件:變量的定義。函數的定義實現,類成員函數的定義實現等。這樣方便于我們去管理、規劃,更重要的是避免了重定義的問題…

圖機器學習(4)——圖機器學習與嵌入算法

圖機器學習(4)——圖機器學習與嵌入算法0. 前言1. 圖機器學習1.1 機器學習基本原理1.2 圖機器學習的獨特優勢2. 廣義圖嵌入問題3. 圖嵌入算法分類小結0. 前言 機器學習是人工智能的一個重要分支,它致力于讓系統能夠從數據中自主學習并持續優…

網絡基礎10--ACL與包過濾

一、ACL 定義與核心功能ACL(訪問控制列表)是通過規則匹配實現數據包過濾或分類的核心技術,廣泛應用于包過濾、NAT、QoS、路由策略等場景。其核心由規則條目組成,每條規則包含匹配條件(如源 / 目 IP、端口、協議&#x…

Web安全 - 基于 SM2/SM4 的前后端國產加解密方案詳解

文章目錄概述一、背景與法規要求二、算法選型三、核心流程四、前端實現要點(偽代碼)五、后端實現要點(偽代碼)六、公鑰存儲策略七、全流程示例圖八、總結與最佳實踐推薦概述 隨著信息安全法規日益嚴格,如《網絡安全法》《數據安全法》和等保…

ACL動態路由實驗全攻略:配置與安全實戰

實驗拓撲圖 實驗需求 步驟1.按照圖示配置IP地址2.按照圖示區域劃分配置對應的動態路由協議3.在R7上配置dhcp服務器,能夠讓pc可以獲取IP地址4.將所有環回宣告進ospf中,將環回17宣告進rip中,將rip路由引rospf中,ospf路由引.rip中5.要…

電動汽車制動系統及其工作原理

制動系統是實現車輛減速、停車功能的重要系統。電動汽車的制動系統按照制動實現方式分為機械制動和電機再生制動,機械制動根據制動力實現方式不同又可分為液壓機械制動系統、氣壓機械制動系統和電子機械制動系統。目前,電動汽車的制動系統實現一般為協調…

CentOS 7 Linux 離線安裝 docker-compose

CentOS 7 Linux 離線安裝 docker-compose 1. docker-compose 簡介 1.1. docker-compose 是什么? docker-compose 是 Docker 官方提供的工具,用于定義和運行多容器 Docker 應用程序。通過一個 YAML 文件(通常為 docker-compose.yml&#xf…

排序算法實戰(上)

一、引言在力扣刷題的旅程中,排序類題目是繞不開的重要板塊。今天就來分享兩道經典排序題——912. 排序數組和75. 顏色分類的解題思路與代碼實現,帶你深入理解排序算法在實際題目中的應用 。二、題目剖析與解題思路(一)912. 排序數…

python學智能算法(二十)|SVM基礎概念-感知機算法及代碼

引言 前序學習進程中,已經學習了超平面的基礎知識,學習鏈接為:超平面 在此基礎上,要想正確繪制超平面,還需要了解感知機的相關概念。 感知機 感知機是對生物神經網絡的模擬,當輸入信號達到感知機的閾值時…

操作HTML網頁

一、HTML網頁的介紹 HTML,即超文本標記語言(HyperText Markup Language),它不是一種編程語言,而是一種標記語言,用于描述網頁的結構。HTML 通過一系列標簽來定義網頁中的各種元素,如文本、圖片…

Django--03視圖和模板

Django–03視圖和模板 Part 3: Views and templates 本教程承接第二部分,我們將繼續開發投票應用,重點介紹 Django 的表單處理和通用視圖。 文章目錄Django--03視圖和模板前言概述一、編寫更多視圖二、編寫實際執行操作的視圖三、快捷方式:r…

《每日AI-人工智能-編程日報》--2025年7月15日

介紹:AI :英偉達恢復向中國銷售 H20 并推出新 GPU:7 月 15 日,英偉達官宣將恢復向中國銷售 H20,并推出全新的 NVIDIA RTX PRO GPU,其中 B30 性能約為 H20 的 75%,定價在 6500 至 8000 美元之間&…

C++STL-list

一.基礎概念相當于數據結構里面的雙向鏈表二.基礎操作1.list對象創建1. 默認構造函數list<int> l1;2. 初始化列表list<int> l2_1 { 9,8,7,6,5 };list<int> l2_2({ 9, 8, 7, 1, 5 });3. 迭代器list <int> l3(l2_1.begin(), l2_1.end());4. 全0初始化li…