Comment on page
2.启动容器
请注意,
docker run
命令的名字略有误导性,因为它不仅会创建一个容器,它还会启动此容器。当在仅停止容器而不移除此容器后使用 docker run
命令时,会导致发生冲突。为了一个简单的开始,请接着往下看。持久性数据存储在容器内的
/data
下,因此使用 Docker 进行持久性部署的唯一要求是挂载持久性卷。创建一个本地目录来映射容器的持久存储:mkdir /vw-data
如果你碰巧使用 SELinux (RHEL & Clones / Fedora),你必须设置持久存储的上下文,以便容器可以写入它:
semanage fcontext -a -t svirt_sandbox_file_t '/vw-data(/.*)?'
restorecon -Rv /vw-data
# 使用 Docker
docker run -d --name vaultwarden -v /vw-data/:/data/ -p 80:80 vaultwarden/server:latest
# 使用 Podman as non-root
podman run -d --name vaultwarden -v /vw-data/:/data/:Z -e ROCKET_PORT=8080 -p 8080:8080 vaultwarden/server:latest
# 使用 Podman as root
sudo podman run -d --name vaultwarden -v /vw-data:/data/:Z -p 80:80 vaultwarden/server:latest
所有持久性数据将保存在
/vw-data/
路径下,您可以根据自己的需要调整此路径。该服务将暴露在主机的 80 或 8080 端口上。默认情况下,非 root 容器不允许使用特权端口 (<1024),因此需要通过端口映射来传递
ROCKET_PORT
环境变量以更改 Vaultwarden 的监听端口。如果您的 docker/vaultwarden 运行在具有固定 IP 的设备上,则可以将主机端口绑定到该 IP 地址,从而避免将主机端口暴露到网络上。如下所示,将 IP 地址(例如 192.168.0.2)添加到主机端口和容器端口前面:
# 使用 Docker
docker run -d --name vaultwarden -v /vw-data/:/data/ -p 192.168.0.2:80:80 vaultwarden/server:latest
如果运行了
docker stop vaultwarden
命令,或重启,亦或任何其他原因,容器停止了,则可以使用以下命令将其启动:docker start vaultwarden
如果您想在容器启动时运行自定义启动脚本,可以将
/etc/vaultwarden.sh
作为单个脚本和/或将 /etc/vaultwarden.d
作为脚本目录挂载到容器中。对于后一种情况,只有扩展名为 .sh
的文件才会运行,因此具有其他扩展名的文件(例如,data/config 文件)则可以驻留在同一个目录中(具体的工作方式请参见 start.sh)。自定义启动脚本对于修补网页密码库文件或安装额外的包、CA 证书等非常有用,因为可以让您不必构建和维护您自己的 Docker 镜像。
假设您的脚本名为
init.sh
,其包含以下内容:echo "starting up"
您可以像这样在启动时运行此脚本:
docker run -d --name vaultwarden -v $(pwd)/init.sh:/etc/vaultwarden.sh <other docker args...> vaultwarden/server:latest
如果您运行
docker logs vaultwarden
,现在您应该能看到 starting up
作为输出的第一行。请注意,每次容器启动时都会运行初始化脚本(而不仅仅是第一次),所以这些脚本通常应该是幂等的(即,您可以多次运行这些脚本而不会出现不良/异常)。如果您的脚本天然没有此属性,你可以这样做:
if [ ! -e /.init ]; then
touch /.init
# 运行您的初始化步骤...
fi
最近更新 2mo ago