gpt4 book ai didi

docker - 如何保存 docker redis 容器

转载 作者:IT老高 更新时间:2023-10-28 21:20:21 24 4
gpt4 key购买 nike

我无法使用 redis 数据库中的数据创建 docker redis 容器的镜像。目前我正在这样做:

docker pull redis
docker run --name my-redis -p 6379:6379 -d redis
redis-cli
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> save
OK
127.0.0.1:6379> exit
docker stop my-redis
docker commit my-redis redis_with_data
docker run --name my-redis2 -p 6379:6379 -d redis_with_data
redis-cli
127.0.0.1:6379> keys *
(empty list or set)

我显然不了解这里的一些非常基本的东西。 docker commit 不会从现有容器创建新镜像吗?


好的,我一直在做一些挖掘工作。 hub.docker 上的默认 redis 镜像使用数据卷,然后将其安装在容器中的/data 处。为了在容器之间共享此卷,您必须使用以下参数启动一个新容器:

docker run -d --volumes-from <name-of-container-you-want-the-data-from> \
--name <new-container-name> -p 6379:6379 redis

注意参数的顺序很重要,否则 docker run 会静默失败。

docker volume ls

会告诉你 docker 已经在你的计算机上创建了哪些数据卷。我还没有找到一种方法来给这些卷起一个简单的名字,而不是一个长的随机字符串。

我还没有找到挂载数据卷的方法,而只是使用 --volumes-from 命令。


好的。我现在可以使用它,但它很笨拙。

docker volume ls
docker volume inspect <id of docker volume>

您可以在本地文件系统上找到 docker 卷的路径。然后,您可以将其挂载到新容器中,如下所示:

docker run -d -v /var/lib/docker/volumes/<some incredibly long string>/_data:/data \
--name my-redis2 -p 6379:6379 redis

这显然不是你应该这样做的方式。我会继续挖掘。


我将到目前为止我发现的所有内容都放在了一篇博文中:my blog post on medium.com

也许这对某人有用

最佳答案

docker 中的数据不是持久的,当您重新启动容器时,您的数据将消失。为了防止这种情况,您必须与您的容器共享主机上的 map 。当您的容器重新启动时,它将从主机上的 map 中获取数据。

您可以在 Docker 文档中了解更多信息:https://docs.docker.com/engine/tutorials/dockervolumes/#data-volumes

来自 redis 容器文档:

运行 redis-server

docker run -d --name redis -p 6379:6379 dockerfile/redis

使用持久数据目录运行 redis-server。 (创建 dump.rdb)

docker run -d -p 6379:6379 -v <data-dir>:/data --name redis dockerfile/redis

使用持久数据目录和密码运行 redis-server。

docker run -d -p 6379:6379 -v <data-dir>:/data --name redis dockerfile/redis redis-server /etc/redis/redis.conf --requirepass <password>

来源: https://github.com/dockerfile/redis

关于docker - 如何保存 docker redis 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43341143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com