Singularity入門の持続化Overlay

2063 ワード

紹介する
Singularityでコンテナを実行し、コンテナが終了すると、コンテナに対する変更が失われますが、コンテナに対する変更はどのように保存されますか?このときSingularityのOverlayで実現できる.
SingularityのOverlayは、ベースミラーに対する変更が保存されているディレクトリまたはファイルシステムミラーです.--overlayオプションを使用して使用できます.次のコンテナコマンドに適用されます.
  • run
  • exec
  • shell
  • instance.start

  • 使用
    まず、centosなどのベースミラーを取得し、取得するとcentos.sifファイルがダウンロードされます.
    $ singularity pull centos
    

    Overlayディレクトリとしてディレクトリを作成します.
    $ mkdir my_overlay
    

    次に、--overlayオプションを使用してコンテナを実行します.セキュリティ上の理由から、--overlayを使用するにはroot権限が必要です.sudoを使用して実行できます.
    $ sudo singularity shell --overlay my_overlay centos.sif
    
    #           zip  ,          。
    Singularity centos.sif:/home/data/singularity-study> zip
    bash: zip: command not found
    
    #     zip 
    Singularity centos.sif:/home/data/singularity-study> yum install -y zip
    ...
    
    #        zip      
    Singularity centos.sif:/home/data/singularity-study> whereis zip
    zip: /usr/bin/zip
    

    次にコンテナを終了し、次のコマンドを使用してコンテナを再実行すると、さっきインストールしたツールがコンテナに入っていることがわかります.
    $ sudo singularity shell --overlay my_overlay centos.sif
    
    #       zip      
    Singularity centos.sif:/home/data/singularity-study> whereis zip
    zip: /usr/bin/zip
    

    次のコマンドを使用してコンテナを実行すると、上に作成したOverlayは使用されません.
    $ sudo singularity shell centos.sif
    
    #       zip  
    Singularity centos.sif:/home/data/singularity-study> zip
    bash: zip: command not found
    

    最後に、Overlayを使用した永続化コンテナでは、Overlayディレクトリに基づいてミラーを作成することはできません.たとえば、次のコマンドを使用してミラーを作成する場合
    $ sudo singularity build my_overlay.sif my_overlay
    INFO:    Starting build...
    INFO:    Creating SIF file...
    INFO:    Build complete: my_overlay.sif
    

    ミラーを作成すると、このミラーを使用してコンテナを作成し、エラーの実行を求めるメッセージが表示されます.
    $ singularity shell my_overlay.sif
    WARNING: passwd file doesn't exist in container, not updating
    WARNING: group file doesn't exist in container, not updating
    FATAL:   exec /.singularity.d/actions/shell failed: no such file or directory