پنج کاری که نمیدونستی Docker انجام میده
خلاصهٔ کاملتر
اجیت راینا و کریستیان ولکوف توی کنفرانس WeAreDevelopers آمریکای شمالی یه تاک با اسم «Docker does that?!» برای بیشتر از ۴۰۰ نفر ارائه دادن. نویسنده میگه خیلی از برنامهنویسها تصویرشون از Docker رو سالها پیش ساختن و دیگه آپدیتش نکردن. برای همین، بهجای لیست کردن فیچرها، یه صبح کاری از یه برنامهنویس به اسم Max رو روایت کردن که باید یه سرویس Node.js و Express به اسم Product Catalog رو کانتینری کنه. این سرویس به Postgres، Kafka و S3 (با LocalStack توی محیط dev) وصله و هیچ Dockerfile یا compose.yaml نداره.
قدم اول Gordon هست، دستیار هوش مصنوعی خود Docker که توی Docker Desktop و CLI هست. با دستور docker ai پروژه رو بررسی میکنه و یه .dockerignore، یه Dockerfile چندمرحلهای (multi-stage) که با کاربر غیر root یعنی node اجرا میشه، و یه compose.yaml با Postgres و Kafka و LocalStack میسازه. نویسنده تأکید میکنه که خروجی ایجنت رو همیشه خودت اجرا کن و تست کن.
قدم دوم Testcontainers هست، یعنی کتابخونهای که از داخل خود تستها یه دیتابیس واقعی مثل postgres:17-alpine رو بهشکل کانتینر بالا میاره و آخر تست پاکش میکنه. اینجوری نه mockها از دیتابیس واقعی فاصله میگیرن، نه سر یه دیتابیس تست مشترک دعوا میشه. برای Java، Go، Python، Node.js، .NET و Rust کتابخونه داره و الان یه پروژهی رسمی Docker هست.
قدم سوم Docker Scout هست که میگه دقیقاً چی توی ایمیجت هست. docker scout quickview یه خلاصهی سریع میده، cves آسیبپذیریها و SBOM (یعنی فهرست کامل نرمافزارهای داخل ایمیج) رو نشون میده، و recommendations یه ایمیج پایهی امنتر پیشنهاد میکنه. نکتهی مهم docker scout policy هست که ایمیج رو با قوانین سازمانت چک میکنه و قبول یا رد میده. توی دمو، ایمیج بهخاطر دو آسیبپذیری high رد شد که از ایمیج پایهی node:20 اومده بودن، نه از کد Max.
قدم چهارم Docker Hardened Images هست: ایمیجهای پایهای که خود Docker نگهشون میداره و از قبل پچ شدن. نسخههای runtime شون shell و package manager ندارن، روی هر ایمیج SBOM و امضای رمزنگاری و provenance سطح SLSA Build L3 هست، و Docker هدفش اینه که CVEهای بحرانی رو حدود ۲۴ ساعته پچ کنه. بیشتر از ۱۰۰۰ ایمیج، رایگان و با لایسنس Apache 2.0 روی Debian و Alpine هستن. Max فقط FROM node:20 رو به dhi.io/node:20 عوض کرد و همون چک policy که قبلاً رد شده بود، این بار قبول شد.
قدم پنجم Docker Sandboxes با CLI به اسم sbx هست. نویسنده توضیح میده که یه ایجنت کدنویسی خودکار همون دسترسیهایی رو داره که خودت داری، یعنی کلیدهای SSH، توکنهای کلاد و کل شبکه. کانتینر معمولی کرنل رو با هاست شریکه و به گفتهی نویسنده «یه نردهست، نه دیوار». sbx ایجنت رو توی یه microVM سبک اجرا میکنه: فایلسیستم هاست فقطخواندنیه، شبکه بهطور پیشفرض بستهست و با allow-list باز میشه، و credentialها توی keychain سیستمعامل میمونن. بعد ایجنت رو به سرور MCP رسمی DHI وصل میکنن تا خودش قبل از نوشتن FROM، با ابزارهایی مثل dhi_get_image_cves ایمیج امن رو انتخاب کنه. دسترسیها با یه policy به زبان Cedar کنترل میشه تا ایجنت فقط ابزارهای فقطخواندنی رو صدا بزنه. کل این تنظیمات رو هم میشه توی یه فایل YAML گذاشت و با sbx env run دوباره ساخت.
نکات کلیدی:
- Gordon با docker ai یه Dockerfile چندمرحلهای با کاربر غیر root و یه compose.yaml میسازه.
- Testcontainers برای Java، Go، Python، Node.js، .NET و Rust کتابخونه داره و دیتابیس واقعی رو برای هر تست جدا بالا میاره.
- docker scout policy قبل از push ایمیج رو با قوانین سازمان چک میکنه، مثل یه مرحلهی CI.
- Docker Hardened Images: بیشتر از ۱۰۰۰ ایمیج رایگان با Apache 2.0، هدف پچ CVE بحرانی حدود ۲۴ ساعت.
- sbx ایجنت رو توی microVM با فایلسیستم فقطخواندنی و شبکهی بسته اجرا میکنه.
- لب کامل این تاک حدود ۳۰ دقیقهست و توی مرورگر بدون نصب اجرا میشه.




