...
...
...
...
...
...
...
...
...
...
...
...
Table of Contents |
---|
บทความนี้ตั้งใจรวบรวม 5 ขั้นตอนอย่างง่ายในการสร้าง Singularity Container โดยท่านสามารถเตรียมความพร้อมล่วงหน้าได้ ดังแสดงในส่วน Requirements
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
Instructions การสร้าง Singularity Container บน local linux machine ของท่าน
step-by-step อย่างง่าย 5 ขั้นตอน
ให้ 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>
ทำการติดตั้งซอฟแวร์หรือ 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 ที่มีส่วนผสมที่ถูกต้องกับงานของท่าน
...
SCP ไปใช้งานบน HPC
เมื่อได้ newsif.sif ที่มี environment การใช้งานตามต้องการแล้วสามารถทำสำเนาขึ้นไปยัง HPC เพื่อใช้งานได้ทันที
$ scp newsif.sif username@tara.nstda.or.th:/<user home หรือ project home directory>/
การใช้งาน Singularity Container บน HPC
สามารถดูตัวอย่างการใช้งานเบื้องต้นร่วมกับภาษา Python ได้ที่นี่ หรือตัวอย่างการใช้งาน Jupyter Notebook ผ่าน Singularity container ได้ที่นี่
...
Related articles
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
...
$ 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
...
$ singularity exec python_3.9-alpine3.14.sif python3
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)