บทความนี้ตั้งใจรวบรวม 5 ขั้นตอนอย่างง่ายในการสร้าง Singularity Container โดยท่านสามารถเตรียมความพร้อมล่วงหน้าได้ ดังแสดงในส่วน Requirements
Instructions การสร้าง Singularity Container
step-by-step อย่างง่าย
ให้ singularity เรียก pull docker image หรือ singularity image ที่ต้องการจาก registry จะได้ไฟล์ .sif
ตัวอย่างคำสั่ง
$ singularity pull docker://nvcr.io/nvidia/tensorflow:21.04-tf2-py3
สร้าง sandbox จากไฟล์ .sif หรือก็คือสร้างโฟลเดอร์ของ container ขึ้นมาเพื่อเข้าไปติดตั้งเพิ่มเติมได้
ตัวอย่างคำสั่ง
$ sudo singularity build --sandbox mysandbox/ tensorflow_21.04-tf2-py3.sif
เข้าสู่ sandbox container แบบ writable และ bind directory ข้างนอกและข้างใน container ไว้ด้วย
ตัวอย่างคำสั่ง
$ sudo singularity shell -B /home/apiyatum:/root --writable mysandbox/
option
-B
ถูกใช้เพื่อ bind directory<my machine directory>:<container directory>
ทำการติดตั้งซอฟแวร์หรือ library packages เพิ่มเติมจาก recipe environment ที่ต้องการลงใน sandbox
เมื่อเตรียม environment ใน sandbox เสร็จ ทำการ build sandbox ให้เป็นไฟล์ .sif อีกครั้ง
ตัวอย่างคำสั่ง
$ sudo singularity build newsif.sif mysandbox/
สิ่งที่ได้คือ Singularity file ใหม่ที่ชื่อ newsif.sif ไปใช้งานต่อใน HPC cluster ได้
Requirements
เครื่องคอมพิวเตอร์ในระบบปฏิบัติการลีนุกซ์ (Linux machine) โดยท่านต้องมีสิทธิ์ root เพื่อทำการ build container
ติดตั้ง Singularity software ใน linux machine เสร็จสิ้น https://thaisc.atlassian.net/l/c/13FtNZ8d
recipe ของ environment ที่ท่านใช้ เช่น
requirement.txt
docker image ที่มีส่วนผสมที่ถูกต้องกับงานของท่าน
Singularity image
...
Filter by label (Content by label) | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Page Properties | ||
---|---|---|
| ||
|
Details…
1. Pulling จาก Registry
มีหลาย registry ให้เราไปดึง container มาได้ เช่น DockerHub หรือ nvc nvidia
จาก DockerHub เราจะได้ pull command มาดังนี้
docker pull python:3.9-alpine3.14
เมื่อเราจะดึงมาเป็น singularity container เราจะใช้คำสั่ง
$ singularity pull docker://python:3.9-alpine3.14
INFO: Converting OCI blobs to SIF format INFO: Starting build... Getting image source signatures Copying blob 29291e31a76a done Copying blob 7905544193a1 done Copying blob f5e5def5d5f7 done Copying blob cef6c1fdc9e4 done Copying blob 24e85e6a20ef done Copying config 846acf258a done Writing manifest to image destination Storing signatures 2021/08/25 15:51:20 info unpack layer: sha256:29291e31a76a7e560b9b7ad3cada56e8c18d50a96cca8a2573e4f4689d7aca77 2021/08/25 15:51:20 info unpack layer: sha256:7905544193a12a0403a4adefebf29fc062dcaef14503592607f0b5bd84de00ca 2021/08/25 15:51:21 info unpack layer: sha256:f5e5def5d5f7d9958b318f1fa52b3bb21146ad9287c12b6c7a44068178b9421a 2021/08/25 15:51:21 info unpack layer: sha256:cef6c1fdc9e4cac180568966c3798ccdcbda510e239403471e8ebf951d8d9240 2021/08/25 15:51:21 info unpack layer: sha256:24e85e6a20ef97c449024bcbb2c93bb70331991ce2c04b26da42f2f7dc59c992 INFO: Creating SIF file... |
ซึ่งเมื่อ ls ดูก็จะพบ python_3.9-alpine3.14.sif
อยู่ใน working directory เรียบร้อย
ลองใช้งาน .sif file
Python 3.9.6 (default, Aug 6 2021, 21:28:54) [GCC 10.3.1 20210424] on linux Type "help", "copyright", "credits" or "license" for more information. >>> |
2. Build เพิ่ม… ลง Package เพิ่ม (Sandbox mode)
เป็นการพัฒนา container เพิ่มเติมในเครื่องคอมพิวเตอร์ของท่าน (laptop / workstation)