این راهنما چه نتیجهای میدهد؟
برای محیط پایدار Docker Engine را از مخزن رسمی Docker نصب کنید، Repository key را با روش keyring نگه دارید و نسخه را آزمایش کنید.
بستههای docker.io توزیع و docker-ce مخزن رسمی چرخه انتشار متفاوتی دارند. یکی را آگاهانه انتخاب کنید و بستههای متعارض قدیمی را پیش از نصب رسمی حذف کنید.
قبل از شروع
نسخه سیستمعامل و معماری CPU را ثبت کنید، از داده و فایل تنظیمات فعلی نسخه پشتیبان بگیرید و مطمئن شوید یک مسیر بازیابی مانند Console ارائهدهنده دارید. اگر سرور Production است، زمان تغییر، مسئول اجرا، معیار موفقیت و روش بازگشت را پیش از اولین فرمان مشخص کنید.
فرمانهای این مقاله برای یک محیط متداول نوشته شدهاند، اما نسخه بستهها و مسیر فایلها ممکن است بین نسخههای Ubuntu یا توزیعهای دیگر فرق کند. مستندات رسمی نسخه نصبشده را مرجع نهایی بدانید و فرمانی را که اثرش را نمیدانید مستقیماً روی Production اجرا نکنید.
پیشنیازها و کنترل دسترسی
با یک کاربر شخصی دارای sudo کار کنید، ساعت سیستم و DNS را بررسی کنید و فضای آزاد دیسک و حافظه را بسنجید. اگر نصب یک سرویس شبکهای است، از قبل مشخص کنید کدام مبدأ باید به کدام پورت دسترسی داشته باشد؛ نصب موفق با سرویس عمومی و بدون Firewall، نتیجه امنی نیست.
- معماری و Codename سیستم را در Repository درست قرار دهید.
- دسترسی گروه docker عملاً سطح root دارد.
- سرویس و اجرای hello-world را بررسی کنید.
مراحل اجرا
مراحل رسمی نسخه فعلی Ubuntu را دنبال کنید، کلید و Repository را از دامنه رسمی بگیرید و پس از نصب وضعیت daemon و نسخه Client/Server را بررسی کنید.
فرمانها را بهترتیب اجرا کنید و خروجی هر مرحله را بخوانید. اگر Package manager، Service manager یا ابزار اعتبارسنجی خطا داد، به مرحله بعد نروید. توقف در همان نقطه، عیبیابی را بسیار سادهتر از ادامهدادن با یک نصب نیمهکاره میکند.
sudo apt updatesudo apt install ca-certificates curlsudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.ascecho "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt updatesudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo systemctl enable --now dockersudo docker run --rm hello-worldهر مرحله چه کاری انجام میدهد؟
بهطور معمول فرایند شامل تازهکردن metadata بستهها، نصب نرمافزار از منبع مشخص، ثبت یا فعالکردن Service و سپس آزمون محلی است. فعالسازی خودکار در Boot با سالمبودن سرویس در همین لحظه فرق دارد؛ هر دو را جداگانه بررسی کنید.
اگر Repository شخص ثالث اضافه میکنید، کلید امضا، دامنه دانلود و Codename توزیع را کنترل کنید. Pin کردن نسخه یا حداقل ثبت نسخه نصبشده باعث میشود محیط بعدی قابل تکرار باشد و Upgrade ناگهانی شما را غافلگیر نکند.
چطور نصب را تأیید کنیم؟
سه لایه را بررسی کنید: Process یا Service باید Running باشد، برنامه باید روی Address و Port مورد انتظار گوش کند و یک درخواست واقعی باید پاسخ درست بگیرد. پس از آن Log را برای Warningهای زمان Startup بخوانید؛ سبز بودن systemctl بهتنهایی سلامت برنامه را تضمین نمیکند.
آزمون را هم از داخل سرور و هم از مسیر واقعی کاربر انجام دهید. موفقیت روی localhost ممکن است با DNS، Reverse proxy، Firewall یا TLS شکسته شود. خروجی نسخه و فایل تنظیمات مؤثر را همراه با نتیجه آزمون در مستندات سرویس ثبت کنید.
امنسازی برای محیط واقعی
سرویس را با کمترین سطح دسترسی اجرا کنید، Secretها را از فایلهای عمومی و Repository خارج نگه دارید و فقط Interface و Port لازم را Bind کنید. برای Log محدودیت حجم و Rotation، برای داده Retention و Backup، و برای خطا Alert قابل اقدام تعریف کنید.
اگر سرویس داده پایدار دارد، قبل از ورود Traffic یک Restore آزمایشی انجام دهید. همچنین مصرف CPU، RAM، دیسک و تعداد Connection را از روز اول پایش کنید تا Baseline سالم داشته باشید؛ بدون Baseline تشخیص تغییر تدریجی دشوار میشود.
اگر مرحلهای خطا داد چه کنیم؟
استفاده بیبررسی از اسکریپت curl-to-shell یا افزودن همه کاربران به گروه docker سطح حمله را بالا میبرد.
پیام خطا و چند خط قبل و بعد آن را نگه دارید، وضعیت Package manager و Service را بررسی کنید و تغییرات همان مرحله را بازبینی کنید. بهجای اجرای چند راهحل پراکنده از اینترنت، ابتدا مشخص کنید خطا مربوط به شبکه، Repository، Permission، Syntax، Port یا Dependency است.
برای بازگشت، فایل تنظیمات قبلی، نسخه بسته و داده را در دسترس نگه دارید. Rollback خوب فقط حذف Package نیست؛ باید بدانید چه فایل، کاربر، Rule فایروال یا Schema در طول نصب تغییر کرده است.
نگهداری بعد از نصب
نصب پایان کار نیست. چرخه Patch، آزمون Upgrade، Backup، Rotation لاگ، تمدید گواهی و بازبینی دسترسی را در تقویم عملیات قرار دهید. ابتدا Update را در محیط آزمایشی اجرا کنید و برای سرویس حیاتی نسخه و زمان تغییر را ثبت کنید.
هر چند وقت یکبار از دید یک سرور تازه، راهنما را دوباره اجرا کنید. اگر نتیجه فقط با دانش ضمنی یک نفر قابل تکرار است، فرایند هنوز پایدار نشده و باید به Script، Infrastructure as Code یا Runbook دقیقتر تبدیل شود.
پرسشهای مهمی که قبل از اقدام باید جواب دهید
برای اینکه پاسخ «آموزش نصب Docker روی Ubuntu» فقط در حد اطلاعات عمومی نماند، ابتدا وضعیت فعلی خود را با عدد توصیف کنید: نسخه سیستمعامل یا نرمافزار، تعداد کاربر همزمان، مصرف معمول و اوج منابع، حجم و رشد داده، محدودیت شبکه و بیشترین قطعی قابل قبول. بدون این اطلاعات ممکن است توصیهای که از نظر فنی درست است، برای محیط شما انتخاب مناسبی نباشد.
دو سؤال بعدی مستقیماً از نکات این موضوع میآیند: «معماری و Codename سیستم را در Repository درست قرار دهید.» در زیرساخت شما چگونه اندازهگیری یا تأیید میشود؟ و «دسترسی گروه docker عملاً سطح root دارد.» چه اثری روی کاربر، هزینه یا مسیر بازیابی دارد؟ پاسخ را در قالب شواهدی مانند خروجی فرمان، نمودار متریک، نتیجه آزمون یا مستند ارائهدهنده ثبت کنید؛ اتکا به حافظه و حدس برای تصمیم عملیاتی کافی نیست.
یک برنامه عملی کمریسک
کار را با ثبت وضعیت فعلی و یک معیار موفقیت آغاز کنید. سپس پیشنهاد اصلی این راهنما را در کوچکترین محیط نماینده اجرا کنید: مراحل رسمی نسخه فعلی Ubuntu را دنبال کنید، کلید و Repository را از دامنه رسمی بگیرید و پس از نصب وضعیت daemon و نسخه Client/Server را بررسی کنید. نتیجه را در حالت عادی و در یک سناریوی خطا یا فشار کنترلشده بسنجید. اگر معیار بهتر نشد، بهجای افزودن تغییرات بیشتر، فرض اولیه را بازبینی کنید.
پیش از اعمال تغییر در سرویس اصلی، روش بازگشت، مسئول تصمیم و زمان توقف را روشن کنید. این هشدار را نیز بهعنوان شرط توقف در نظر بگیرید: استفاده بیبررسی از اسکریپت curl-to-shell یا افزودن همه کاربران به گروه docker سطح حمله را بالا میبرد. پس از اجرا، نتیجه، نسخهها و تنظیمات مؤثر را مستند کنید و یک زمان بازبینی تعیین کنید؛ تغییر بدون پایش ممکن است امروز سالم به نظر برسد اما در پیک بعدی شکست بخورد.
- معماری و Codename سیستم را در Repository درست قرار دهید.
- دسترسی گروه docker عملاً سطح root دارد.
- سرویس و اجرای hello-world را بررسی کنید.
چکلیست نهایی
برای پایان «آموزش نصب Docker روی Ubuntu» باید نسخه و منبع نصب، وضعیت سرویس، پورت و Firewall، آزمون واقعی، Log، Backup، Alert و روش Rollback مشخص باشند. اگر یکی از این موارد نامعلوم است، نصب از نظر عملیاتی هنوز کامل نیست.
- معماری و Codename سیستم را در Repository درست قرار دهید.
- دسترسی گروه docker عملاً سطح root دارد.
- سرویس و اجرای hello-world را بررسی کنید.