*使用非 root 用户运行 docker 容器

默认情况下,vaultwarden/server 使用 root 用户在容器内运行服务。如果您想以非 root 用户身份运行容器,则需要进行一些设置:

1、确保您在容器内挂载的目录可供用户写入。例如,如果您决定以 nobody 身份运行,那么此目录就必须是 id 为 65534 的用户可以写入的。有关在容器内指定用户的其他方法,请参阅 docker 文档。这里的示例中,我们将使用 nobody

# 在主机上创建目录,将其更改为您的首选路径
sudo mkdir /vw-data

# 使用用户 ID 设置所有者。
# 请注意,所有权必须与容器内的 /etc/passwd 中的用户一致,而不是主机上的用户
sudo chown 65534 /vw-data

# 授予所有者对该文件夹的全部权限
sudo chmod u+rwx /vw-data

2、使用合适的参数启动容器。定义用户并确保启动时端口设置为 1024 或更高。

docker run -d \
  --name vaultwarden \
  --user nobody \
  -e ROCKET_PORT=1024 \
  -v /vw-data/:/data/ \
  -p 80:1024 \
  vaultwarden/server:latest

请注意,端口映射 (-p 80:1024) 反映了 ROCKET_PORT 设置。

另一种方法可能是 CAP_NET_BIND_SERVICE,它允许以非 root 用户身份绑定到低于 1024 的端口。

cap_add:
  - CAP_NET_BIND_SERVICE
user: nobody

最后更新于