From ed2545bc132fa6644091b8b2e5ec4aba9d1b5a15 Mon Sep 17 00:00:00 2001 From: ncaq Date: Fri, 3 Jul 2026 15:49:39 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20native-linux=E5=90=91=E3=81=91=E3=81=AB?= =?UTF-8?q?rootless=20Docker=E7=92=B0=E5=A2=83=E3=82=92=E6=A7=8B=E7=AF=89?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `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を宣言する方針です。 --- home/core/docker.nix | 9 ++++++++- nixos/native-linux/docker.nix | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 nixos/native-linux/docker.nix diff --git a/home/core/docker.nix b/home/core/docker.nix index ac15581c..6593836c 100644 --- a/home/core/docker.nix +++ b/home/core/docker.nix @@ -1,8 +1,15 @@ { pkgs, ... }: { + # Dockerクライアント設定(~/.docker/config.jsonとDOCKER_CONFIG)を + # home-managerで宣言的に管理する。 + # このモジュールはパッケージを入れないのでdocker-clientは別途入れる。 + # config.jsonがNixストアへの読み取り専用リンクになるため、 + # docker loginが必要になったらsettings.credsStoreでcredential helperを宣言する。 + programs.docker-cli.enable = true; + home.packages = with pkgs; [ act - docker-client + docker-client # clientOnlyなdockerパッケージ。buildx(BuildKit)とcomposeプラグイン同梱。 docker-compose-language-service dockerfile-language-server hadolint diff --git a/nixos/native-linux/docker.nix b/nixos/native-linux/docker.nix new file mode 100644 index 00000000..bcde660e --- /dev/null +++ b/nixos/native-linux/docker.nix @@ -0,0 +1,15 @@ +{ username, ... }: +{ + # rootless Dockerを使う。 + # 常時rootで動くデーモンを避けるため。 + # podmanではなくDockerなのはBuildKitがそのまま動いてほしいから。 + # nixpkgsのdockerパッケージはbuildx(BuildKit)とcomposeプラグインを同梱している。 + virtualisation.docker.rootless = { + enable = true; + # DOCKER_HOSTをrootlessソケット(unix://$XDG_RUNTIME_DIR/docker.sock)に向ける。 + setSocketVariable = true; + }; + + # rootlessコンテナ内のuid/gidマッピングに必要なsubuid/subgidを自動割り当てする。 + users.users.${username}.autoSubUidGidRange = true; +}