kachick / times_kachick

`#times_kachick channel in chat` as a public repository. Personal Note and TODOs
https://github.com/kachick/times_kachick/issues?q=is%3Aissue+is%3Aclosed
6 stars 0 forks source link

2022-07-23 - singularity が開発環境としての docker 代りにサクッと使えそう #186

Closed kachick closed 2 years ago

kachick commented 2 years ago

https://github.com/zricethezav/gitleaks とか https://github.com/secretlint/secretlint試そうとしたんだけど、go はともかく nodejs が常に求められるの嫌だなーと思ったので久しぶりにというか、WSL2には初めて docker を入れようとした。 Docker Desktop が有料になった関連からか docker-ce 側を推奨される記事とか諸々見つつ入れてみたけど、どうにも daemon が立ち上がらない・・・ 所謂 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? なんだけど、 嘘か真か https://docs.docker.com/desktop/windows/wsl/ 見ると 「WSL2 環境はナイスだよ、でも Docker Desktop 使おうね」(~意訳~違訳) とある。 そうなんだ・・・うーん、どうせ面倒な思いするなら前からちょっと気になってた singularity を使ってみるかと思った。

https://github.com/sylabs/singularity

インストール面倒くさそうな気がしてたんだけど、docker 側もワンコマンドで入るわけじゃないし同じぐらいでは。 むしろユーザー設定とかデーモン設定飛ばして使える分楽まであった。 https://docs.sylabs.io/guides/latest/user-guide/quick_start.html#quick-installation-steps では 17 台が使われてたけど、 asdf で入れてた 18.x 台の golang でも行けた。 ただ手順内で libseccomp-dev と pkg-config を入れているにも関わらず Package libseccomp was not found in the pkg-config search path. で怒られる。 ここだけちょっと詰まったけど、 brew install libseccomp したら通った。多分自分が Linuxbrew 使ってるから色々怪しい環境になってるんだろうな・・・

操作感は楽。sudo 無しで起動できて pwd がデフォルトでマウントされるので、自分みたいにいつまで経っても docker の事を覚えられないカジュアルユーザーにも便利に感じた。

❯ singularity run docker://hello-world
Hello from Docker!...

❯ singularity exec docker://ruby ruby -ve 'p 42.to_r'
INFO:    Using cached SIF image
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
(42/1)

❯ singularity exec docker://zricethezav/gitleaks:latest gitleaks detect --no-git
INFO:    Using cached SIF image

    ○
    │╲
    │ ○
    ○ ░
    ░    gitleaks

6:00PM INF scan completed in 41.316575ms
6:00PM WRN leaks found: 2

❯ singularity exec docker://secretlint/secretlint secretlint "**/*"
  1:8  error  [AWSAccessKeyID] found AWS Access Key ID: ****** @secretlint/secretlint-rule-preset-recommend > @secretlint/secretlint-rule-aws

✖ 1 problem (1 error, 0 warnings)

デプロイに使うとかじゃなくてサクッと docker image で起動したい物がある時にはとても便利なのでは。

kachick commented 2 years ago

公式ガイドの手順で入るバージョンが微妙に古い。自分は先に https://github.com/sylabs/singularity/releases 見てたので適当に書き換えて入れたけど、更新しようとしたら自動取得みたいな感じだった。

https://github.com/sylabs/singularity-userdocs/blob/13adde777b246f3a2bfe9b4d4fb5e72a313ef9e6/quick_start.rst?plain=1#L128-L131 https://github.com/sylabs/singularity-userdocs/blob/d504ebd49eb936e351829135c7e788d34eb73f94/replacements.py#L14-L15

最新版がリリースされたのが 5日前なのにドキュメントの最終更新日が2ヶ月前なので、自動更新にずれが出てそう。 https://github.com/sylabs/singularity-userdocs/commits/d504ebd49eb936e351829135c7e788d34eb73f94

kachick commented 2 years ago

docker-compose 的なことは出来ないのでは・・・?と思ったら有るらしい https://github.com/singularityhub/singularity-compose

kachick commented 6 months ago

https://github.com/kachick/lishogi-devenv という、lishogi をローカルで動かすための定義とか手順書をまとめたようなリポジトリを作った。そこで(久しぶりに)必要になった MongoDB は SSPL という unfree なライセンスになったので、nixpkgs には入っていても cachix にバイナリキャッシュが置かれていないっぽい。こうなると毎回ビルドするの大変すぎる事もあり、コンテナで走らせることにした。

https://github.com/kachick/lishogi-devenv/blob/fac6e10a70915b429af285ebf9fc81617846957e/flake.nix#L57-L69

気軽に動かしやすいという認識なので、 nixpkgs から singularity をインストールするようにしたらめっちゃ楽。 しかし singularityhub/singularity-compose はずっと更新されていない事もあってチマチマターミナル上げまくったり、macos で動かない等々あってまぁやっぱ docker とかメジャーな方に色々乗っかっておいたほうが楽な気はしてきた。

kachick commented 5 months ago

デーモンレスはデーモンレスでもpodman使うようになった。デフォルトでsystemd対応なのがnixと相性いいので。。。