我在使用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