~/kılavuzlar/docker/scratch-ile-statik-uygulama/

docker/scratch-ile-statik-uygulama.md

scratch ile statik Docker uygulaması

Düzenlendi · Kapsam: Linux konteynerinde GCC ile statik derlenen bir C++ konsol uygulaması.

scratch, dosya sistemi boş başlayan bir imaj oluşturur. Kabuk, paket yöneticisi ve paylaşımlı kütüphaneler içermez. Basit bir C++ uygulamasını statik derleyerek bu tabanda çalıştırabiliriz.

Uygulama

Boş bir dizinde hello.cc oluşturun:

#include <iostream>

int main() {
    std::cout << "Merhaba, dünya!\n";
    return 0;
}

Dockerfile

Derleme araçları ilk aşamada kalır; son imaja yalnızca uygulama kopyalanır. Böylece macOS veya Windows üzerinde yanlışlıkla Linux dışı bir ikili derlemekten kaçınırız.

FROM gcc:14 AS build
WORKDIR /src
COPY hello.cc .
RUN g++ -O2 -static -o hello hello.cc

FROM scratch
COPY --from=build /src/hello /hello
USER 65532:65532
ENTRYPOINT ["/hello"]

Derleme ve çalıştırma

Docker’ın Linux konteynerleri çalıştırdığı bir ortamda:

docker build --tag hello-scratch .
docker run --rm hello-scratch

Beklenen çıktı:

Merhaba, dünya!

Sınırlar ve doğrulama

Statik derleme her uygulamanın tüm çalışma zamanı ihtiyaçlarını ortadan kaldırmaz. Sertifikalar, saat dilimi verileri ve uygulamanın okuyacağı dosyalar ayrıca gerekebilir. Bu örnek yalnızca konsola yazan bir program içindir.

scratch davranışı Docker taban imaj belgesi ile karşılaştırıldı. Örnek, Docker Engine 29.6.2 üzerinde Linux/ARM64 hedefinde derlendi ve çalıştırıldı; Merhaba, dünya! çıktısı alındı.

Son içerik incelemesi: 02.11.2026.