如何保存docker redis容器
我在用redis数据库中的数据创建docker redis容器的映像时遇到问题。目前我正在这样做:如何保存docker redis容器,docker,redis,Docker,Redis,我在用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
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已经在您的计算机上创建了哪些数据卷。我还没有找到一种方法来给这些卷起一个简单的名字,而不是一个长的随机字符串
我还没有找到装载数据卷的方法,只是使用--volumesfrom
命令
好的。我现在让它工作起来了,但它很麻烦 与
docker卷ls
docker音量检查
您可以在本地文件系统上找到docker卷的路径。
然后,您可以将其装载到新容器中,如下所示:
docker run -d -v /var/lib/docker/volumes/<some incredibly long string>/_data:/data \
--name my-redis2 -p 6379:6379 redis
docker run-d-v/var/lib/docker/volumes//\u data:/data\
--名称my-redis2-p 6379:6379 redis
这显然不是你应该做的。我将继续挖掘
我把迄今为止我所发现的一切都写在了一篇博文中:
也许这对某些人有用docker中的数据不是持久的,当您重新启动容器时,您的数据将消失。为了防止这种情况,您必须在主机上与容器共享一个映射。当容器重新启动时,它将从主机上的映射中获取数据 您可以在Docker文档中了解更多信息: 从redis容器文档: 运行redis服务器
docker run -d --name redis -p 6379:6379 dockerfile/redis
使用持久数据目录运行redis server。(创建dump.rdb)
docker run-d-p 6379:6379-v:/data——名称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>
docker run-d-p 6379:6379-v:/data--name redis dockerfile/redis redis server/etc/redis/redis.conf--requirepass
资料来源:
手动使用数据卷和共享RDB文件并不难看,事实上,这就是数据卷的设计目的,用于将数据与容器分离 但是,如果您确实需要/希望将数据保存到image并以这种方式共享,您可以将redis工作目录从volume
/data
更改为其他位置:
- 启动redis容器时,选项1正在更改
:--dir
然后,您可以按照步骤创建新图像。请注意,由于权限问题,此方法只能使用docker run -d redis --dir /tmp
/tmp
- 选项2正在使用已更改的
创建新图像:WORKDIR
然后FROM redis RUN mkdir /opt/redis && chown redis:redis /opt/redis WORKDIR /opt/redis
并使用此图像来完成您的工作docker build-t redis new image
docker run -d -p 6379:6379 -v <data-dir>:/data --name redis dockerfile/redis redis-server /etc/redis/redis.conf --requirepass <password>
docker run -d redis --dir /tmp
FROM redis
RUN mkdir /opt/redis && chown redis:redis /opt/redis
WORKDIR /opt/redis