首页 > 解决方案 > docker-compose 没有数据保存在卷目录中

问题描述

Docker 不保存到卷。

我尝试了不同的组合,但它只是不保存到卷中。他们都没有保存到卷...

我使用以下命令运行它们:

$ sudo docker-compose up -d --remove-orphans
$ sudo docker-compose start

如果我停止并启动 docker 容器,那么数据又会在那里(这意味着 docker 将数据保存在某处……只是不在我指定的卷中)

我的主机正在运行 ubuntu 20.04

该怎么办?

// docker-compose.yml

version: "3.7"
services:
  sqlserver:
    image: mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
    ports:  
      - "1433:1433"
      - "5022:5022"
    volumes:
        - /media/m/DataLinux/Code/Docker/db-playground/sqldata:/var/opt/sqlserver/data
        # - /media/m/DataLinux/Code/Docker/db-playground/sqlbackup:/var/opt/mssql/backups
        # - /media/m/DataLinux/Code/Docker/db-playground/sqlserver:/var/opt/sqlserver
        # - /media/m/DataLinux/Code/Docker/db-playground/mssql:/var/opt/mssql
    environment:
      USERID: sa
      SA_PASSWORD: Dev1234!
      ACCEPT_EULA: Y
  mongo:
    image: amd64/mongo:4.4.3-bionic
    restart: always
    volumes:
      - /media/m/DataLinux/Code/Docker/db-playground/mongo-data:/var/data
    ports:  
        - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: secret
  postgres:
    image: supabase/postgres:0.14.0
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: postgres # user: postgres


# volumes:
#   sqldata:
#   mongo-data:
#   sqlsystem:
  # sqllog:
  # sqlbackup:
  # sqlsecrets:

标签: dockerdocker-composevolume

解决方案


你的问题太令人困惑了:))

根据您的 docker,您将绝对路径指定为存储数据的卷。例如:

media/m/DataLinux/Code/Docker/db-playground/sqldata

然后,如果您的容器已成功启动,您应该去检查该位置。(否则,如果在引导过程中发生任何问题,它会立即显示,您可以看到发生了什么)

我还看到您volumesdocker-compose.yml. 请注意,如果您使用这种类型的卷,它们就是Docker volumes- 由 Docker 管理的卷。它们存储在 中/var/lib/docker/volumes您永远不应该手动触摸它们,而应该使用 Docker cli 来处理它们:

docker volume create <volume name>
docker volume delete <volume name>
...

推荐阅读