[英]How to persist data on a volume when using docker swarm mode?
Docker的新手,我試圖將Postgres和pgadmin4設置為在虛擬機內Mac的docker上作為單一服務運行。 一切正常,但是一旦我停止服務,我的數據就消失了。 我正在使用命名卷來保留數據,但可能做錯了。 它是什么?
這是我的設置:
# create my VM
docker-machine create dbvm
# set the right environment
eval $(docker-machine env dbvm)
這是我docker-compose.yaml
文件:
version: '3'
services:
db:
image: postgres
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=my_db
volumes:
- pgdata:/pgdata
ports:
- 5432:5432
pgadmin:
image: fenglc/pgadmin4
ports:
- 5050:5050
volumes:
- pgadmindata:/pgadmindata
volumes:
pgdata:
pgadmindata:
使用docker-compose.yaml
,我運行:
docker stack deploy -c docker-compose.yaml dbstack
我可以在此設置上執行所有操作,但是如果我運行docker stack rm dbstack
,數據將在此之后消失,但是卷仍然存在。
$ docker volume ls
DRIVER VOLUME NAME
local 0c15b0b22c6b850e8768c14045da166253424dda4df8d2e13df75fd54d833412
local 22bab81d9d1de0e07de97363596b096f944752eba617ff574a0ab525239227f5
local 6da6e29fb98ad0f66d7da6a75dc76066ce014b26ea43567c55ed318fda707105
local dbstack_pgadmindata
local dbstack_pgdata
我想念什么?
除非您在未顯示的某些配置中具有它,否則我相信您需要映射到容器內的默認數據位置,例如pgdata:/var/lib/postgresql/data
@Idg部分正確。 根據Docker Hub自述文件, postgres數據位於/var/lib/postgresql/data
。
但是,要使其在您命名的卷中起作用,您不能使用左側的路徑,因此正確的值應為:
volumes:
- pgdata:/var/lib/postgresql/data
然后,postgres數據將保留在其創建所在節點上的該命名卷中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.