我在使用redis数据库中的数据创建docker 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 volume ls
会告诉您哪些数据卷已由您的计算机上的docker创建。我还没有找到一种方法来给这些卷一个平凡的名字,而不是一个很长的随机字符串。
我还没有找到挂载数据卷的方法,而只是使用--volumes-from命令。
好的。我现在有它的工作,但它ctrdgey。
随着
docker volume ls
docker volume inspect <id of docker volume>
你可以找到本地文件系统上的泊坞窗卷的路径。 然后,您可以在一个新的容器装入此如下:
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
也许这将是某人
我可以停止并重新启动容器,数据仍然存在。我希望将图像中的所有数据都存储起来,这样我就可以将图像发送给某人,并且可以运行它。 – ehrt1974
您首先停止容器(数据放在容器上),然后提交它。也许你可以在停止之前提交? – Frenus
容器停止时,数据不会消失。它(至少在我的系统上)是持久的。 – ehrt1974