مراحل ساخت image اختصاصی در LXC(کانتینر در لینوکس)
در این بخش قصد دارد مراحل ساخت image های از نوع اوبونتو در ساختار کانتینر LXC/LXD رو برای شما معرفی کنم. همانطور که می دانید یکی از روشهای مجازی سازی در سیستم عامل لینوکس استفاده از LXC یا همان Linux Container هست. در استفاده از این روش شما می توانید از مخازن تصاویر اصلی این پروژه استفاده نمایید! اما سوال اینجاست که آیا به این image ها می شود اعتماد کرد؟
جواب ساده است در مراحل اولیه و برای تست کردن سیستم بله این image ها خوب و کاربردی هستند اما در زمانی که شما image ها خاص خود را نیاز داشته باشید چه کاری باید انجام داد؟
شما به راحتی می توانید ایمج های خاص خود را ایجاد کنید و در ساختار LXC آنها را قرار دهید و استفاده نمایید و هر تنظیم و برنامه ای که مورد نیاز شما هست را می توانید در ساختار مورد نظر خود نصب کنید، ایمیج مورد نظر را ایجاد کنید و در مرحله بعدی image را در ساختار LXC قرار دهید و استفاده نمایید.
مرحله اول نصب برنامه های مورد نیاز:
در گام اول حتما باید LXC/LXD برروی توزیع لینوکس شما نصب شده باشد.
در گام دهم باید برنامه debootstrap را بروری سیستم عامل مبتنی بر دبین خود با استفاده از فرمان زیر نصب کنید
$ sudo apt-get install debootstrap
ایجاد ساختار مجازی سازی:
در مرحل بعد شما باید یک شاخه برای نصب ساختار سیستم عامل اوبونتو خود ایجاد کنید و در مرحل بعد با استفاده از debootstrap در این شاخه پایه و اساس سیستم عامل خود را نصب کنید:
$sudo mkdir /tmp/sid-lxd
$sudo debootstrap sid /tmp/sid-lxd
بعد از انجام مراحل اولیه نصب و اتمام آن ساختار مورد نظر شما برروی شاخه ایجاد شده است حال باید با استفاده از فرمان chroot وارد شاخه مورد نظر شوید و هر تغییر و نصبی که نیاز است را انجام دهید:
$sudo chroot /tmp/sid-lxd
root@Mabedini63:/#
حال شما هر تغییری که نیاز دارید را می توانید انجام دهید مثل نصب و پیکربندی وب سرور و سایر سرورها و برنامه هایی که به آن نیاز دارید.
ایجاد فایلهای Image ها
در این مرحله شما باید با استفاده از برنامه tar یک فایل جامع و کامل از شاخه خود ایجاد کنید که این فایل در حقیقت فایل اصلی image برای ساختار lxc است، با استفاده از فرمان زیر می توانید این کار را انجام دهید:
sudo tar -cvzf rootfs.tar.gz -C /tmp/sid-lxd .
به نقطه در انتهای این فرمان دقت نمایید.
در مرحل بعد باید فایل metadata.yaml را با ساختار متنی به صورت زیر ایجاد کنید و تنظیمات مورد نظر را ایجاد کنید:
architecture: "x86_64"
creation_date: 1458040200 # To get current date in Unix time, use `date +%s` command
properties:
architecture: "x86_64"
description: "Debian Unstable (sid)
os: "debian"
release: "sid"
از فایل مورد نظر شما باید یک فایل tar با استفاده از فرمان زیر ایجاد کنید:
tar -cvzf metadata.tar.gz metadata.yaml
انتقال تصویر ایجاد شده به ساختار LXC
بعد از اینکه مراحل نصب اولیه LXC را به صورت کامل انجام داده باشید با استفاده از فرمان زیر دو فایل ایجاد شده را به ساختار lxc خود اضافه کنید:
lxc image import metadata.tar.gz rootfs.tar.gz --alias Mabedini
حال شما می توانید با استفاده از فرمان زیر وضعیت تصویر بارگزاری شده خود را بررسی نمایید:
root@Mabedini63:/home/abedini# lxc image list
+---------+--------------+--------+-------------+--------------+-----------+-----------+------------------------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE |
+---------+--------------+--------+-------------+--------------+-----------+-----------+------------------------------+
| mabedin | 3309fea4c899 | no | | x86_64 | CONTAINER | 195.62MiB | Sep 3, 2023 at 10:00am (UTC) |
+---------+--------------+--------+-------------+--------------+-----------+-----------+------------------------------+
root@Mabedini63:/home/abedini#
حال تصویر ایجاد شده شما آماده است و شما می توانید با استفاده از فرمان های lxc کانتینر مورد نظر خود را از روی تصویر اختصاصی خود ایجاد و استفاده نمایید.