问题:获取 consul Docker 映像以与 Vault 数据保持一致

我正在使用带有 Consul Docker 映像的 Vault Docker 映像作为其存储。我的问题是,如果 Consul 容器出现故障,我将尝试运行一个新容器,我需要重新初始化 vault,Consul 保存的数据会丢失。

任何人都知道我需要做什么才能使数据持久化?

运行 Consul 镜像的命令:

docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp -it consul

运行 Vault 映像的命令:

docker run -d -p 8200:8200 -v /root/vault:/vault --cap-add=IPC_LOCK vault server

以及保管库配置文件内容:

{
            "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 创建持久卷并将其挂载到容器上:

docker volume create consul-volume --label description='Persistent data for consul'

为 consul 创建 local.json 配置文件:

{
    "log_level": "DEBUG",
    "server": true,
    "ui": true,
    "bootstrap": true,
    "client_addr":"0.0.0.0"
}

运行领事容器:

docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --net mynet -v /root/vault/consul:/consul --mount type=volume,source=consul-volume,target=/consul/data --name consul -it consul agent

运行保管库容器:

docker run -d -p 8200:8200 -v /root/vault:/vault --cap-add=IPC_LOCK vault server

并且 consul 容器中的数据是持久化的。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐