Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
kachick opened this issue Mar 9, 2024 · 3 comments

Comments

@kachick
Copy link
Owner

kachick commented Mar 9, 2024

kachick/dotfiles#451 & kachick/dotfiles@1f275de

とりあえず コンテナ内 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: chmod run/shm: Operation not supported で引っかかる。これは crun とやらのバージョンが古いことに関係しているらしい container with systemd don't start containers/crun#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
Copy link
Owner Author

kachick commented Mar 10, 2024

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

@kachick
Copy link
Owner Author

kachick commented Mar 17, 2024

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

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

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

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

@kachick
Copy link
Owner Author

kachick commented May 15, 2024

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 のまま余計な事しないようにしたら動くようになった

kachick/dotfiles#592

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant