Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

บทความนี้ตั้งใจรวบรวม 5 ขั้นตอนอย่างง่ายในการสร้าง Singularity Container โดยท่านสามารถเตรียมความพร้อมล่วงหน้าได้ ดังแสดงในส่วน Requirements

Instructions การสร้าง Singularity Container

step-by-step อย่างง่าย

  1. ให้ singularity เรียก pull docker image หรือ singularity image ที่ต้องการจาก registry จะได้ไฟล์ .sif

    1. ตัวอย่างคำสั่ง $ singularity pull docker://nvcr.io/nvidia/tensorflow:21.04-tf2-py3

  2. สร้าง sandbox จากไฟล์ .sif หรือก็คือสร้างโฟลเดอร์ของ container ขึ้นมาเพื่อเข้าไปติดตั้งเพิ่มเติมได้

    1. ตัวอย่างคำสั่ง $ sudo singularity build --sandbox mysandbox/ tensorflow_21.04-tf2-py3.sif

  3. เข้าสู่ sandbox container แบบ writable และ bind directory ข้างนอกและข้างใน container ไว้ด้วย

    1. ตัวอย่างคำสั่ง $ sudo singularity shell -B /home/apiyatum:/root --writable mysandbox/

    2. option -B ถูกใช้เพื่อ bind directory <my machine directory>:<container directory>

  4. ทำการติดตั้งซอฟแวร์หรือ packages เพิ่มเติมจาก recipe environment ที่ต้องการลงใน sandbox

  5. เมื่อเตรียม environment ใน sandbox เสร็จ ทำการ build sandbox ให้เป็นไฟล์ .sif อีกครั้ง

    1. ตัวอย่างคำสั่ง $ sudo singularity build newsif.sif mysandbox/

    2. สิ่งที่ได้คือ Singularity file ใหม่ที่ชื่อ newsif.sif ไปใช้งานต่อใน HPC cluster ได้

Requirements

  1. เครื่องคอมพิวเตอร์ในระบบปฏิบัติการลีนุกซ์ (Linux machine) โดยท่านต้องมีสิทธิ์ root เพื่อทำการ build container

  2. ติดตั้ง Singularity software ใน linux machine เสร็จสิ้น https://thaisc.atlassian.net/l/c/13FtNZ8d

  3. recipe ของ environment ที่ท่านใช้ เช่น

    1. requirement.txt

    2. docker image ที่มีส่วนผสมที่ถูกต้องกับงานของท่าน

    3. Singularity image

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)


  • No labels