🐳 Docker Secret – نحوه استفاده از Docker Swarm و Docker Compose |

5 دقیقه

به عنوان اطلاعات محرمانه Docker طراحی شده است که نام کاربری حساس به Docker است. ، گواهینامه های SSL و هر فایل ایمن

Docker Secret توسط Docker Swarm ایجاد شد و به طور گسترده ای مورد استفاده قرار گرفت و سپس از نسخه 3 به docker compose گسترش یافت.

اگر نگران محافظت از داده های حساس خود هستید، Docker Secret یکی از آنها خواهد بود.

فقط تصور کنید، ما هرگز نمی خواهیم یک فایل پیکربندی را با تمام رمزهای عبور خود در GitHub / هر مخزن، عمومی یا حتی خصوصی ذخیره کنیم.

در این آموزش، جنبه های مختلف پیکربندی و با استفاده از اسرار داکر

قبل از اینکه وارد عمل شویم، در اینجا مقدمه ای درباره نحوه استفاده از آن در خدمات ازدحام داکر آورده شده است. به سرویس‌های ما اجازه دسترسی به اسرار مورد نیازشان را بدهید.

هنگامی که یک سرویس ایجاد می‌شود (یا به‌روزرسانی می‌شود)، راز در یک محفظه در فهرست راهنمای /run/secrets نصب می‌شود. آزمایش کنید، لطفاً "docker swarm init" را اجرا کنید که گره swarm docker شما را راه‌اندازی می‌کند.

اکنون می‌توانید از دستور docker secret create برای اضافه کردن یک راز جدید به swarm استفاده کنید

در اینجا یک مثال اساسی وجود دارد:

 echo "mypassword" | docker secret create mypass - 

حالا بیایید از دستور "docker secret ls" استفاده کنیم تا تأیید کنیم که راز ما اضافه شده است:

 docker secret ls 

باید چیزی شبیه به این دریافت کنید:

 ID NAME CREATED UPDATED
rkxav7s9rvnc9d7ct6dhkrsyn mypass 3 دقیقه پیش 3 دقیقه پیش 

قبل از اینکه به افزودن راز به سرویس بپردازیم، ببینیم چه کارهای دیگری می توانیم با راز Docker انجام دهیم. دستور برای راز داکر :

 داکر مخفی بازرسی secret_name 

در مورد ما "mypass" خواهد بود.

حذف یک راز داکر

شما می توانید یک راز را با دستور زیر

 docker secret حذف کنید. rm secret_name 

افزودن یک راز به سرویس

اکنون که راز را به swarm اضافه کرده‌اید، باید به سرویس اجازه دسترسی به آن را بدهید.

این را می‌توان هنگام ایجاد یا به‌روزرسانی یک سرویس انجام داد. 19659006] در اینجا مثالی از نحوه اضافه کردن یک راز هنگام ایجاد یک سرویس آورده شده است:

 سرویس docker ایجاد --secret mypass --name secret alpine ping itsecforu.ru 

در این مثال، من رمز mypass را که در ایجاد کردیم اضافه می کنم. مرحله قبلی به سرویسی که تصویر آلپاین را اجرا می کند.

🐧 Ka برای به روز رسانی Alpine Linux به آخرین نسخه

اگر سرویس از قبل در حال اجرا است و ما می خواهیم یک راز اضافه کنیم (یا تغییر دهیم)، می توانیم از گزینه -secret-add استفاده کنیم. mypass exist_service_name

چگونه در زمان واقعی کار می کند

چندین روش مختلف برای استفاده از آن در زمان واقعی وجود دارد، و بر اساس نیازهای برنامه خود، می توانید روشی را انتخاب کنید که بهترین کار را برای شما دارد.

Secret. برای هر رمز عبور

در مثال بالا، من نشان دادم که چگونه می توانید یک رمز عبور را مخفی نگه دارید. مخفی کنید و هنگام ایجاد یا به روز رسانی آن ها را به سرویس مناسب اضافه کنید. می تواند خیلی طول بکشد زمان

راز برای هر سرویس

روش ممکن دیگر این است که تمام اسرار مورد نیاز هر سرویس را در یک فایل ذخیره کنید – شاید در یک فایل json به نام "service.json."

حالا شما یکی را اضافه کنید فایل مخفی برای هر سرویس، و همه رمزهای عبور در فایلی ذخیره می شوند که می تواند به سرعت توسط برنامه شما خوانده شود.

اما اشکال آشکار این است که سرویس‌ها اغلب اسرار را به اشتراک می‌گذارند، بنابراین برخی از داده‌های حساس ممکن است تکراری شوند. (نیازی به اجرای Swarm ندارید.)

🐳 مدیریت کانتینرهای Docker با Docker Compose

من به docker-compose تغییر مکان دادم زیرا می‌خواستم از اسرار استفاده کنم

هر سرویس به یک کانتینر نگاشت

توجه: رازها در محیط کانتینر بارگذاری نمی شوند، بلکه در /run/secrets/ نصب می شوند.
| — docker-compose.yml
| — mysecret.txt

docker-compose.yml شامل:

 نسخه: "3.6"
خدمات:
my_service:
تصویر: اوبونتو: 18.04
نقطه ورود: "گربه / اجرا / اسرار / راز"
اسرار:
- راز
اسرار:
راز:
فایل: ./mysecret.txt 

mysecret.txt حاوی:

 این متن مخفی من است 

این دستور را به عنوان root اجرا کنید تا مطمئن شوید که کانتینر باید به راز شما دسترسی داشته باشد (Docker) در حال اجرا و نصب docker-compose):

 docker-compose up --build myservice 

باید ببینید که کانتینر شما راز شما را به صورت زیر نمایش می دهد،

 ایجاد شبکه "secret_default" با درایور پیش فرض
کشیدن myservice (centos: 7) ...
7: کشیدن از کتابخانه / centos
524b0c1e57f8: کشیدن کامل است
خلاصه: sha256: e9ce0b76f29f942502facd849f3e468232492b259b9d9f076f71b392293f1582
وضعیت: تصویر جدیدتر دانلود شده برای centos: 7
ایجاد Secret_myservice_1 ... انجام شد
در حال پیوست کردن به secret_myservice_1
myservice_1 | این متن مخفی من است
Secret_myservice_1 با کد 0 

خارج شد همچنین: