| apptainer(1) | apptainer(1) |
نام (NAME)
apptainer-build - ساخت یک ایمیج Apptainer
خلاصه دستور (SYNOPSIS)
apptainer build [local options...]
توضیحات (DESCRIPTION)
مسیر ایمیج (IMAGE PATH):
هنگامی که Apptainer کانتینر را میسازد، خروجی میتواند یکی از چند قالب زیر باشد:
default: The compressed Apptainer read only image format (default) sandbox: This is a read-write container within a directory structure
نکته: یک گردش کاری معمول استفاده از حالت «sandbox» برای توسعه کانتینر، و سپس ساخت آن به عنوان یک ایمیج پیشفرض Apptainer برای استفاده در محیط عملیاتی است. قالب پیشفرض تغییرناپذیر است.
مشخصات ساخت (BUILD SPEC):
هدف مشخصات ساخت یک پرونده تعریف (def)، ایمیج محلی، یا URI است که میتواند برای ایجاد یک کانتینر Apptainer استفاده شود. چندین قالب هدف محلی مختلف وجود دارد:
def file : This is a recipe for building a container (examples below)
buildkit: A build context directory, containing a Dockerfile to build
directory: A directory structure containing a (ch)root file system
image: A local image on your machine (will convert to sif if
it is legacy format)
هدفها همچنین میتوانند از راه دور بوده و با یک URI در قالبهای زیر مشخص شوند:
library:// an image library (no default) docker:// a Docker/OCI registry (default Docker Hub) shub:// an Apptainer registry (default Singularity Hub) oras:// an OCI registry that holds SIF files using ORAS ipfs:// an IPFS cluster, using a HTTP gateway
پروندههای موقت (Temporary files):
مکان استفادهشده برای دایرکتوریهای موقت بهطور پیشفرض /tmp است، اما میتواند توسط متغیر محیطی TMPDIR بازنویسی شود، و خود آن نیز میتواند توسط متغیر محیطی APPTAINER_TMPDIR بازنویسی شود. دایرکتوری موقت مورد استفاده در طول ساخت باید روی سیستمفایلی قرار داشته باشد که فضای کافی برای نگهداری کل ایمیج کانتینر به صورت غیرفشرده، شامل تمامی پروندههای موقتی که در طول ساخت ایجاد و سپس حذف میشوند را داشته باشد. ممکن است هنگام ساخت یک کانتینر بزرگ روی سیستمی که سیستمفایل /tmp کوچکی دارد، نیاز به تنظیم APPTAINER_TMPDIR یا TMPDIR داشته باشید.
گزینهها (OPTIONS)
--arch="amd64" معماری مد نظر برای ساخت
--arch-variant="" گونه معماری مد نظر برای ساخت
--authfile="" پرونده احراز هویت به سبک Docker جهت استفاده برای نوشتن/خواندن اعتبارنامههای رجیستری OCI
-B, --bind=[] مشخصات مسیر اتصال سفارشی کاربر. مشخصات دارای قالب src[:dest[:opts]] است، که در آن src و dest مسیرهای خارج و داخل هستند. اگر dest تعیین نشود، برابر با src در نظر گرفته میشود. گزینههای سوار کردن ('opts') میتوانند به صورت 'ro' (فقطخواندنی) یا 'rw' (خواندنی/نوشتنی، که پیشفرض است) تعیین شوند. چندین مسیر اتصال را میتوان با یک فهرست جدا شده با کاما ارائه کرد.
--build-arg=[] تعریف variable=value برای جایگزینی ورودیهای {{ variable }} در پرونده تعریف ساخت
--build-arg-file="" مشخص کردن یک پرونده حاوی خطوط variable=value برای جایگزینی '{{ variable }}' با مقدار مربوطه در پروندههای تعریف ساخت
--buildkit-host="" مشخص کردن یک میزبان دیمن سفارشی BuildKit
--data[=false] ساخت ایمیج با پارتیشن داده به جای پارتیشن سیستم
--disable-cache[=false] عدم استفاده از حافظه موقت (cache) یا عدم ایجاد آن
--docker-host="" مشخص کردن یک میزبان دیمن سفارشی Docker
--docker-login[=false] ورود تعاملی به یک مخزن Docker
-e, --encrypt[=false] ساخت ایمیج با یک سیستمفایل رمزگذاریشده
-f, --fakeroot[=false] ساخت با ظاهر اجرای کاربر ریشه (پیشفرض هنگام ساخت از یک پرونده تعریف به صورت غیراختصاصی)
--fix-perms[=false] اطمینان از وجود دسترسیهای rwX برای مالک روی تمام محتویات کانتینر برای منابع oci/docker
-F, --force[=false] بازنویسی پرونده ایمیج در صورت وجود
-h, --help[=false] راهنمای دستور ساخت (build)
--json[=false] تفسیر تعریف ساخت به صورت JSON
--library="" نشانی اینترنتی (URL) کتابخانه کانتینر
--mksquashfs-args="" آرگومانهای اضافی برای ارسال به mksquashfs هنگام ایجاد پروندههای SIF
--mount=[] مشخصات سوار کردن، به عنوان مثال 'type=bind,source=/opt,destination=/hostopt'.
--no-cleanup[=false] عدم پاکسازی بسته پس از شکست در ساخت؛ میتواند برای اشکالزدایی مفید باشد
--no-https[=false] استفاده از http به جای https برای URIهای docker:// ، oras:// و library:///...
-T, --notest[=false] ساخت بدون اجرای آزمونها در بخش %test
--nv[=false] تزریق کتابخانههای Nvidia میزبان در طول ساخت برای بخشهای post و test
--nvccli[=false] استفاده از nvidia-container-cli برای راهاندازی پردازنده گرافیکی GPU (آزمایشی)
--passphrase[=false] درخواست عبارت عبور برای رمزگذاری
--pem-path="" وارد کردن یک مسیر به کلید RSA با قالب PEM برای یک کانتینر رمزگذاریشده
--reproducible[=false] ایجاد یک ساخت تکرارپذیر با استفاده از تاریخ ایجاد ایمیج منبع
--rocm[=false] تزریق کتابخانههای Rocm میزبان در طول ساخت برای بخشهای post و test
-s, --sandbox[=false] ساخت ایمیج در قالب sandbox (ساختار دایرکتوری chroot)
--section=[all] تنها اجرای بخش(های) مشخصشده از deffile (شامل setup, post, files, environment, test, labels, none)
-u, --update[=false] اجرای تعریف بر روی کانتینر موجود (سرآیند نادیده گرفته میشود)
--userns[=false] ساخت بدون استفاده از setuid حتی در صورت در دسترس بودن
--warn-unused-build-args[=false] نمایش هشدار به جای پیام خطای مهلک هنگام عدم تطابق دقیق آرگومانهای ساخت
--writable-tmpfs[=false] در طول بخش %test، سیستمفایل را به صورت خواندنی-نوشتنی با دادههای ناپایدار در دسترس قرار میدهد (تنها با پشتیبانی از overlay)
مثال (EXAMPLE)
DEF FILE BASE OS:
Library:
Bootstrap: library
From: debian:9
Docker:
Bootstrap: docker
From: tensorflow/tensorflow:latest
IncludeCmd: yes # Use the CMD as runscript instead of ENTRYPOINT
Singularity Hub:
Bootstrap: shub
From: singularityhub/centos
YUM/RHEL:
Bootstrap: yum
OSVersion: 7
MirrorURL: http://mirror.centos.org/centos-%{OSVERSION}/%{OSVERSION}/os/x86_64
Include: yum
SUSE:
Bootstrap: zypper # on SLE system registration of build host is used
Include: zypper
openSUSE:
Bootstrap: zypper
MirrorURL: http://download.opensuse.org/distribution/openSUSE-stable/repo/oss
Include: zypper
Debian/Ubuntu:
Bootstrap: debootstrap
OSVersion: trusty
MirrorURL: http://us.archive.ubuntu.com/ubuntu
Local Image:
Bootstrap: localimage
From: /home/dave/starter.img
Scratch:
Bootstrap: scratch # Populate the container with a minimal rootfs in %setup
DEFFILE SECTIONS:
The following sections are presented in the order of processing, with the exception
that labels and environment can also be manipulated in %post.
%pre
echo "This is a scriptlet that will be executed on the host, as root before"
echo "the container has been bootstrapped. This section is not commonly used."
%setup
echo "This is a scriptlet that will be executed on the host, as root, after"
echo "the container has been bootstrapped. To install things into the container"
echo "reference the file system location with $APPTAINER_ROOTFS."
%files
/path/on/host/file.txt /path/on/container/file.txt
relative_file.txt /path/on/container/relative_file.txt
%post
echo "This scriptlet section will be executed from within the container after"
echo "the bootstrap/base has been created and setup."
%environment
LUKE=goodguy
VADER=badguy
HAN=someguy
export HAN VADER LUKE
%test
echo "Define any test commands that should be executed after container has been"
echo "built. This scriptlet will be executed from within the running container"
echo "as the root user. Pay attention to the exit/return value of this scriptlet"
echo "as any non-zero exit code will be assumed as failure."
exit 0
%runscript
echo "Define actions for the container to be executed with the run command or"
echo "when container is executed."
%startscript
echo "Define actions for container to perform when started as an instance."
%labels
HELLO MOTO
KEY VALUE
%help
This is a text file to be displayed with the run-help command.
COMMANDS:
Build a sif file from an Apptainer recipe file:
$ apptainer build /tmp/debian0.sif /path/to/debian.def
Build a sif image from the Library:
$ apptainer build /tmp/debian1.sif library://debian:latest
Build a base sandbox from DockerHub, make changes to it, then build sif
$ apptainer build --sandbox /tmp/debian docker://debian:latest
$ apptainer exec --writable /tmp/debian apt-get install python
$ apptainer build /tmp/debian2.sif /tmp/debian
همچنین ببینید (SEE ALSO)
تاریخچه (HISTORY)
30-Jul-2026 تولید خودکار توسط spf13/cobra
| Jul 2026 | Auto generated by spf13/cobra |