Docker部署Vault从入门到实践

为什么选择用Docker部署Vault

Vault 是 HashiCorp 出品的密码&密钥管理工具,用Docker跑 Vault 能省去手动安装依赖的麻烦,升级、备份都很方便。
本文目标:让你从头到尾跑通一套可用的 Vault 单机版,并学会最基础的初始化、解封和读写密码。

准备工作:确认Docker环境和目录结构

在开始之前,请确认你的服务器上已经安装好 Docker(版本 20.10+ 比较稳)。
可以用下面的命令检查:

docker --version

如果没有安装,CentOS 用户可执行 yum install -y dockersystemctl start docker
Ubuntu 用户用 apt install docker.io
宝塔面板用户直接到“软件商店”安装 Docker 管理器即可。

接着创建 Vault 的数据目录和配置文件目录:

mkdir -p /opt/vault/data
mkdir -p /opt/vault/config

/opt/vault/data 用来存放 Vault 的加密数据,/opt/vault/config 放自定义配置。

核心步骤:拉取镜像并启动容器

第一步:拉取Vault官方镜像

docker pull vault:1.15

建议使用明确的小版本号,避免未来升级造成意外。
如果你偏好最新版,也可以写 latest,但最好固定版本。

第二步:生成一个简单的配置文件

新建 /opt/vault/config/vault.hcl,内容如下:

storage "raft" {
  path = "/vault/data"
  node_id = "node1"
}

listener "tcp" {
  address     = "0.0.0.0:8200"
  tls_disable = true
}

api_addr = "http://0.0.0.0:8200"
cluster_addr = "https://0.0.0.0:8201"
ui = true

这里 tls_disable = true 是为了测试方便,生产环境一定要配置 TLS 证书。ui = true 开启 Web 界面。

第三步:启动容器并挂载目录

docker run -d --name vault \
  --restart=always \
  -p 8200:8200 \
  -p 8201:8201 \
  -v /opt/vault/config:/vault/config \
  -v /opt/vault/data:/vault/data \
  -e VAULT_CONFIG_DIR=/vault/config \
  -e VAULT_ADDR=http://127.0.0.1:8200 \
  vault:1.15 server

参数解析:

  • --restart=always:容器崩溃或服务器重启后自动拉起。
  • -p 8200:8200:监听 API 和 UI 端口。
  • -v 将宿主机目录挂载到容器内,确保配置文件和数据持久化。
  • VAULT_CONFIG_DIR 告诉 Vault 去哪个目录加载配置文件。

第四步:初始化Vault

容器启动后,进入容器初始化:

docker exec -it vault vault operator init

你会看到类似下面的输出:

Unseal Key 1: xxxxxxxxxx
Unseal Key 2: xxxxxxxxxx
Unseal Key 3: xxxxxxxxxx
Unseal Key 4: xxxxxxxxxx
Unseal Key 5: xxxxxxxxxx
Initial Root Token: s.xxxxxxxxxxxxx

请立即复制并安全保存这些Unseal Key和Root Token,丢了等于无法解封。

第五步:解封Vault

初始化后的 Vault 是密封状态,需要至少3个(默认阈值)Unseal Key 才能解封:

docker exec -it vault vault operator unseal

依次输入 Unseal Key 1、2、3,每输入一个按回车。
解封成功后终端会显示 Sealed: false

避坑与常见问题

问题1:容器启动后立刻退出

通常是配置文件权限或路径错误。
检查容器日志:

docker logs vault --tail 20

如果提示 permission denied,确保 /opt/vault/data 目录容器用户可写。
可以在宿主机执行 chown 100:100 /opt/vault/data(Vault 容器内的用户 UID 常为 100)。

问题2:忘记Root Token

如果你丢失了 Root Token,唯一的办法是用 recovery keys(生产环境建议开启自动解封并定期备份 Token)。
测试环境可以重建容器重新初始化。

问题3:UI访问不了

检查防火墙是否放行了8200端口,并且容器启动命令中确认 -p 8200:8200
浏览器访问 http://服务器IP:8200 即可看到登录界面。

效果验证:测试读写密码

1. 登录UI验证

打开浏览器访问 http://<服务器IP>:8200,用 Root Token 登录。
展开“Secret Engines”,如果看到 kv 默认引擎,说明部署成功。

2. 命令行验证(推荐)

设置环境变量后操作:

export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN='你的RootToken'

写入一个密码:

docker exec -it vault vault kv put secret/myapp username=admin password=P@ssw0rd

读取密码:

docker exec -it vault vault kv get secret/myapp

如果能正常返回 Key Value 和对应的值,则 Vault 完全正常工作。

总结

本文从零开始演示了Docker部署Vault的全流程,包括容器启动、初始化、解封和UI/CLI验证。
记住三大要点:保存好Unseal Key和Root Token生产环境必须配置TLS定期备份存储路径 -v /opt/vault/data
遇到异常时优先回看避坑和高频问题部分。
如果你正在处理 Docker部署Vault,建议先按本文步骤完整执行,再根据自己的环境做微调。

分享到:
上一篇
Linux服务器磁盘空间监控从零开始:命令、脚本与告警实战
下一篇
服务器容器安全防护措施指南:零基础也能加固你的容器环境
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意