我正在将Vault Docker镜像与Consul Docker镜像用作其存储。
我的问题是,假设Consul容器将崩溃,并且我将尝试运行新容器,则需要再次重新启动Vault,并且Consul保存的数据会丢失。
有人知道我需要做什么才能使数据持久化吗?
运行Consul镜像的命令:
docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp -it consul
运行保险柜镜像的命令:
docker run -d -p 8200:8200 -v /root/vault:/vault --cap-add=IPC_LOCK vault server
以及Vault配置文件的内容:
{
"listener": [{
"tcp": {
"address": "0.0.0.0:8200",
"tls_disable" : 1
}
}],
"storage" :{
"consul" : {
"address" :"172.17.0.4:8500"
"path" :"vault/"
}
}
"max_lease_ttl": "10h",
"default_lease_ttl": "10h",
"ui": true,
}
最佳答案
根据consul's docker description的说法,在开发模式下不以任何方式使用VOLUME /consul/data
,这是领事代理的默认设置。
要运行以服务器模式运行的1个领事代理和1个保管库服务器(即not recommended)的沙箱,您可以:
docker volume create consul --label description='Persistent data for consul'
docker run -d \
-p 8400:8400 -p 8500:8500 -p 8600:53/udp \
--net host \
--mount type=volume,source=consul,target=/consul/data \
--name consul \
-it consul agent -server -bind=127.0.0.1 -bootstrap-expect=1
127.0.0.1
): "storage" :{
"consul" : {
"address" :"127.0.0.1:8500"
docker run -d \
-p 8200:8200 \
-v /root/vault:/vault \
--cap-add=IPC_LOCK \
--net host \
--name vault \
vault server
然后检查领事是否正确安装了该卷:
$ docker inspect --format '{{ .Mounts }}' consul
保管箱已将领事配置为存储:
$ docker logs vault 2>&1 | grep Storage
Storage: consul (HA available)
然后像往常一样初始化/解封金库。
关于docker - 获取领事Docker镜像以与Vault数据保持一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52535751/