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

2024-03-09 - systemd を走らせている間に操作して commit を加えた container image を 作る #277

Closed kachick closed 4 months ago

kachick commented 4 months ago

https://github.com/kachick/dotfiles/pull/451 & https://github.com/kachick/dotfiles/commit/1f275de6335ca8adf1983375c423046ca30e04fb

とりあえず コンテナ内 systemd を早期から謳っていたらしい podman ならできた。ただ自分がやりきるまで結構長かったので雑にメモっておく そもそも理解が間違っていたり不足してる箇所がある可能性は大

  1. CMD にせよ ENTRYPOINT にせよまず run 時に systemd を指定する必要がある。これはUID1で走らせる必要があるからで、つまり podman run 時じゃないとその状態にはならないので Containerfile 内で systemd を走らせるということは出来ず、その後に走らせるみたいな処理も出来ない。せいぜい後で走らせたい処理のスクリプトをCOPYで置いといて使いやすくするぐらい
  2. これはつまり podman build とか buildah run みたいに Containerfile からだけでは作りきれない。じゃあそもそも systemd 後に変更加えたimage作るの自体が実現不可なのかというとそういうわけでもなくて、まず podman run で systemd を走らせる。その後に podman exec なりで走ってる container 内で build script を走らせる。これを予め Containerfile 内の COPY なりで送って置くと楽(というかパイプ接続時とかの引数まで含めてうまく渡す方法がわからないのでそうしている)
  3. これを GitHub Actions で完結させようとすると、systemd container image を podman run するあたりで Error: OCI runtime error: chmodrun/shm: Operation not supported で引っかかる。これは crun とやらのバージョンが古いことに関係しているらしい https://github.com/containers/crun/issues/1308 そのまま redhat の https://github.com/redhat-actions/buildah-build 使っても runner に最初から入っている podman やその依存性を更新してくれるわけではなく、また apt-get 以外にsetup-podmanみたいな action があるわけでもないようなので、 最新の ubuntu-22.04 を使ってても自力でなんとかしないといけない。で、そのやり方を紹介してくれてる方が https://noobient.com/2023/11/15/fixing-ubuntu-containers-failing-to-start-with-systemd/ に書いてくれているので、参考にすれば万事うまく行く

ということもあったりして先日買ってすぐ積んでた(今見たら無料とか書いてあるけど日本語版だけ?) Podmanイン・アクション を改めて読み出してるけど、過去に読んだ Docker 本より大分面白く読めている。自分が少しは container 系ツールを触ったから昔よりは解像度が高いというのもあるだろうけど、これまではどちらかというと使う側からのノウハウとか逆引きみたいなのでそれなら公式の最新リファレンスにあたったほうが良いなぁみたいな気もしてたんだけど、これはPodman自体の開発者から利用者に理解してもらいたい箇所、彼が重要だと思っている箇所から説明してくれているのでその差が大きい気はする。対面で話を聞いている感覚になれる。

kachick commented 4 months ago

🤔 これもちゃんと理解していれば最後の3以外当たり前の話という気はするので、学習量が足りなすぎる感

kachick commented 3 months ago

crun とやらのバージョンが古い

kubic とやらに最新のpodmanが上がってるのでそれを使えばこのステップは不要だった 尚 buildah は kubic も1年ぐらい更新止まってる。基本的にredhat陣営としてはubuntuのことそんな気にしてられんよという雰囲気で仕方ない気もしつつ、github action runner の選択肢が ubuntu なのでちと困ることは多い

Containerfile からだけでは作りきれない。

第三章の高度なトピックにsystemdの話が多く見られて、なんかできそうなきもする。home-manager まで巻き取れるか試そう

kachick commented 2 months ago

https://github.blog/changelog/2024-05-14-github-hosted-runners-public-beta-of-ubuntu-24-04-is-now-available/

GitHub Actions でも 24.04 が使えるようになったので上げてみたところ、案の定こねこねしてる podman 周りで一番引っかかった

最新の ubuntu-22.04 を使ってても自力でなんとかしないといけない

むしろ自力で中途半端なバージョンいれると壊れるので、最初から入ってる 4.9.3 のまま余計な事しないようにしたら動くようになった

https://github.com/kachick/dotfiles/pull/592