Singularity入門之通過鏡像定義文件創建鏡像
- 2019 年 10 月 7 日
- 筆記
鏡像配置文件
下面以 Redis 資料庫為例,主要說說 %startscript 和 %runscript 的區別。
看下面 redis.def 配置文件
Bootstrap:library From: ubuntu:18.04 %help Redis 5.0.0 for Ubuntu %post apt-get update apt-get install -y wget build-essential wget http://download.redis.io/releases/redis-5.0.0.tar.gz tar xzf redis-5.0.0.tar.gz cd redis-5.0.0 make %startscript /redis-5.0.0/src/redis-server %runscript /redis-5.0.0/src/redis-cli
其中:
- %startscript 是指容器啟動時運行的命令,見下面:啟動 Redis Server
- %runscript 是指容器執行時運行的命令,通過 run 子命令或者直接運行容器鏡像來執行,見下面:運行 Redis Client
- 具體配置文件說明,可以參考: https://sylabs.io/guides/3.2/user-guide/definition_files.html
製作鏡像
製作鏡像需要 root 許可權,所以下面命令用 sudo 來執行。
$ sudo singularity build redis.sif redis.def
使用鏡像
啟動 Redis Server
啟動 Redis Server 會調用 %startscript 來啟動 Redis Server。
$ singularity instance start redis.sif redis INFO: instance started successfully
運行 Redis Client
運行 Redis Client 會調用 %runscript 來運行 Redis Client。
# 通過 run 子命令運行 Redis Client $ singularity run redis.sif 127.0.0.1:6379> ? # 通過直接執行鏡像來運行 Redis Client $ ./redis.sif 127.0.0.1:6379>