buildah-unshare(1) General Commands Manual buildah-unshare(1)

buildah-unshare - اجرای دستور در یک فضای نام کاربری (User Namespace) جدید

buildah unshare [گزینه‌ها] [--] [دستور]

یک فرآیند (به‌طور پیش‌فرض، $SHELL) را در یک فضای نام کاربری (User Namespace) جدید اجرا می‌کند. این فضای نام کاربری به گونه‌ای پیکربندی شده است که UID و GID اصلی کاربر فراخواننده به ترتیب به عنوان UID 0 و GID 0 نمایش داده می‌شوند. هر محدوده‌ای که در /etc/subuid و /etc/subgid با آن کاربر و گروه مطابقت داشته باشد نیز با کمک ابزارهای کمکی newuidmap(1) و newgidmap(1) به عنوان خودشان نگاشت می‌شوند.

دستور buildah unshare برای عیب‌یابی عملیات‌های بدون امتیاز (unprivileged) و پاکسازی دستی فضای ذخیره‌سازی و سایر داده‌های مربوط به ایمیج‌ها و کانتینرها مفید است.

همچنین اگر بخواهید از دستور buildah mount استفاده کنید، این دستور کاربرد دارد. اگر یک کاربر بدون امتیاز بخواهد یک کانتینر را سوار (mount) کرده و با آن کار کند، باید buildah unshare را اجرا کند. اجرای buildah mount برای کاربران بدون امتیاز با شکست مواجه می‌شود، مگر اینکه کاربر درون یک نشست (session) buildah unshare در حال اجرا باشد.

--mount, -m [VARIABLE=]containerNameOrID

کانتینر containerNameOrID را هنگام اجرای دستور سوار (mount) می‌کند و متغیر محیطی VARIABLE را روی مسیر نقطه اتصال (mountpoint) تنظیم می‌نماید. اگر VARIABLE مشخص نشود، مقدار پیش‌فرض آن containerNameOrID خواهد بود که ممکن است یک نام معتبر برای متغیر محیطی نباشد.

buildah unshare id

buildah unshare pwd

buildah unshare cat /proc/self/uid_map /proc/self/gid_map

buildah unshare rm -fr $HOME/.local/share/containers/storage /run/user/`id -u`/run

buildah unshare --mount containerID sh -c 'cat ${containerID}/etc/os-release'

buildah unshare --mount root=containerID sh -c 'cat ${root}/etc/os-release'

اگر می‌خواهید از buildah به همراه دستور «mount» استفاده کنید، می‌توانید اسکریپتی مشابه زیر ایجاد نمایید:

cat > buildah-script.sh << _EOF
#!/bin/bash
ctr=$(buildah from scratch)
mnt=$(buildah mount $ctr)
dnf -y install --installroot=$mnt --use-host-config --setopt "*.countme=false" PACKAGES
dnf -y clean all --installroot=$mnt
buildah config --entrypoint="/bin/PACKAGE" --env "FOO=BAR" $ctr
buildah commit $ctr imagename
buildah unmount $ctr
_EOF
chmod +x buildah-script.sh

سپس آن را با دستور زیر اجرا کنید:

buildah unshare ./buildah-script.sh

buildah(1), buildah-mount(1), namespaces(7), newuidmap(1), newgidmap(1), user_namespaces(7)

June 2018 buildah