Conversation
`nixos/native-linux/docker.nix`を追加してrootless Dockerを有効にします。 常時rootで動くデーモンを避けたいのでrootlessにします。 podmanではなくDockerを選ぶのはBuildKitがそのまま動いてほしいためで、 nixpkgsのdockerパッケージはbuildx(BuildKit)とcomposeプラグインを同梱しています。 rootlessに必須のsubuid/subgidは`autoSubUidGidRange`で自動割り当てします。 恒久的にコンテナを動かす予定はまだありませんが、 `linger`が既に有効なので将来の常駐化にも対応できます。 home-manager側は`programs.docker-cli`モジュールを有効にして、 クライアント設定(`config.json`と`DOCKER_CONFIG`)を宣言的に管理するようにします。 `config.json`がNixストアへの読み取り専用リンクになるため、 `docker login`が必要になったら`settings.credsStore`でcredential helperを宣言する方針です。
nvd diff: seminar (base: master)Version changes
Added packages
|
There was a problem hiding this comment.
rootless Docker環境の宣言的な構築として、全体的にクリーンで丁寧にコメントされた良い変更です。6観点(コード品質/依存関係/ドキュメント/セキュリティ/パフォーマンス/テスト)で並列レビューを実施しました。
差分中のコメント(config.jsonが読み取り専用リンクになる点、DOCKER_HOSTの向き先unix://$XDG_RUNTIME_DIR/docker.sock、autoSubUidGidRangeによるsubuid/subgid自動割り当て、docker-clientがclientOnlyでbuildx/compose同梱である点)はいずれもモジュール実装と照合した結果、技術的に正確でした。programs.docker-cliはconfig.jsonとDOCKER_CONFIGのみを管理しパッケージを入れないため、docker-clientを別途導入する構成も正しいです。username specialArg・linger(既にnixos/core/user.nixで有効)・setSocketVariableの使い方も適切で、既存の他モジュールと競合するdocker設定はありません。新規nixos/native-linux/docker.nixはimportDirModulesにより自動importされます。
ブロッカーはありません。非ブロッキングの気付きを2点インラインで残します。rootlessデーモンはsystemd userサービスとして起動するため、ビルド成功後にdocker infoがrootlessモードで応答しdocker buildでBuildKitが動くことの手動確認をおすすめします。
nixos/native-linux/docker.nixを追加してrootless Dockerを有効にします。常時rootで動くデーモンを避けたいのでrootlessにします。
podmanではなくDockerを選ぶのはBuildKitがそのまま動いてほしいためで、
nixpkgsのdockerパッケージはbuildx(BuildKit)とcomposeプラグインを同梱しています。
rootlessに必須のsubuid/subgidは
autoSubUidGidRangeで自動割り当てします。恒久的にコンテナを動かす予定はまだありませんが、
lingerが既に有効なので将来の常駐化にも対応できます。home-manager側は
programs.docker-cliモジュールを有効にして、クライアント設定(
config.jsonとDOCKER_CONFIG)を宣言的に管理するようにします。config.jsonがNixストアへの読み取り専用リンクになるため、docker loginが必要になったらsettings.credsStoreでcredential helperを宣言する方針です。