【问题标题】:How to persist data on a volume when using docker swarm mode?使用 docker swarm 模式时如何在卷上保存数据?
【发布时间】:2018-07-28 15:52:45
【问题描述】:

Docker 新手,我正在尝试将 Postgres 和 pgadmin4 设置为在虚拟机内的 docker for Mac 上作为单一服务运行。一切正常,但一旦我停止服务,我的数据就消失了。我正在使用命名卷来保存数据,但可能做错了什么。它是什么?

这是我的设置:

# 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

我错过了什么?

【问题讨论】:

    标签: postgresql docker yaml docker-swarm


    【解决方案1】:

    除非您在某些未显示的配置中使用它,否则我相信您需要映射到容器内的默认数据位置,例如 pgdata:/var/lib/postgresql/data

    【讨论】:

    • 猜猜我的误解是我可以为要存储在我的 docker-compose 文件中的数据设置一个自定义文件夹。这适用于 postgres。 pgadmin 仍然无法正常工作,所以这是我接下来要尝试解决的问题。谢谢!
    【解决方案2】:

    @Idg 部分正确。根据Docker Hub readme,postgres 数据位于/var/lib/postgresql/data

    但要让它在您的命名卷中工作,您不能使用左侧的路径,因此正确的值是:

    volumes:
      - pgdata:/var/lib/postgresql/data
    

    然后,postgres 数据将保留在该命名卷中,在创建它的节点上。

    【讨论】:

    • 是的,使用您键入的命令有效,但不确定我是否理解“您不能使用右侧的路径”。为什么/var/lib/postgresql/data 不被视为路径?
    • 哈,我的意思是左侧,哎呀。会修复的。
    猜你喜欢
    • 1970-01-01
    • 2019-09-16
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    相关资源
    最近更新 更多