در این مثال یک برنامه ی C نوشته و با استفاده از تصویر scratch آن را داکرایز می کنیم. هدف این مثال تنها این است که با ساده ترین نوع و سبک ترین تصویر ممکن آشنا شوید و اگر ابزار کامپایل زبان C را روی سیستم خود ندارید تنها این مثال را بررسی کنید و اگر خدایی نکرده در آینده نیاز به داکرایز کردن برنامه ای به زبان های نزدیک به زبان ماشین داشتید، سعی کنید این مثال را خودتان انجام دهید.

1- ابتدا تصویر scratch را دریافت کنید:

docker pull scratch

در خروجی باید پیغام خطایی زیر را دریافت کنید:

Using default tag: latest
Error response from daemon: 'scratch' is a reserved name

2- حالا یک فایل به نام main.c ایجاد کنید.

3- درون این فایل بنویسید:

#include <stdio.h>

int main()
{
    int i;
    for (i=1; i<=10; i++)
    {
        printf('%d\n', i);
    }
    return 0;
}

در زبان C، مفهومی به نام Indentation(مثل پایتون و در ادامه دوره فایل های yml) نداریم و انتهای هر خط و دستور با ; مشخص می شود.

4- برنامه را کامپایل کنید:

g++ -o main -static main.c


نکته:

برای تست فایل بیلد شده میتوانید دستور زیر را اجرا کنید:

./main


5- در دایرکتوری فعلی یک Dockerfile ساخته و در آن بنویسید:

FROM scratch

ADD main /

CMD ["/main"]

6- تصویر را بسازید:

docker build -t scratch-c-image .

7- یک کانتینر بر اساس این تصویر ایجاد کنید:

docker run scratch-c-image

در خروجی باید اعداد 1 تا 10 را ببینید

8- با دستور docker images سایز تصویر را بررسی کنید(حدود 1 مگابایت خواهد بود!)

docker images scratch-c-image

9- با docker history لایه های تصویر را بررسی کنید:

docker history scratch-c-image


اگر در سطوح خیلی بالایی با میکروسرویس ها کار کنید ممکن است در آینده به استفاده از scratch نیاز داشته باشید. این اطلاعات را گوشه ی ذهن خود نگه دارید و بعدا در صورت نیاز دوباره به مرور این موضوع بپردازید.