为什么mysql docker 数据在拉取运行 新图像和清除缓存后仍然存在?

Why mysql docker data still exist after pulling and running new image and clearing cache?

我 运行 mysql 和一个简单的 spring 启动应用程序,用于仅使用简单的控制器和存储库 class.[=19 获取数据以存储在数据库中=]

我添加了一些数据。然后 我停止了所有容器并删除了图像和卷

I 运行: docker system prune --volumes -a 当 I 运行 docker system df 输出是:

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          0         0         0B        0B
Containers      0         0         0B        0B
Local Volumes   0         0         0B        0B
Build Cache     0         0         0B        0B

据我所知,除了 docker 本身,PC 上什么都没有。

但是当我 运行 我的 docker-compose.yml 文件 docker-compose up -d

它正在下载 mysql 的新图像并从它的 docker 文件构建我的应用程序,但是当我检查数据库时,我仍然在数据库中看到旧数据。这是我的 docker-compose.yml 文件:

version: '3.9'

services:
  mysql:
    platform: linux/amd64
    image: mysql:8
    container_name: mysqlcustomerdb
    restart: always
    ports:
      - '3306:3306'
    volumes:
      - ~/apps/mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=1234
      - MYSQL_PASSWORD=1234
      - MYSQL_DATABASE=mysqlcustomerdb
      - DATABASE_HOST=mysqlcustomerdb
      - MYSQL_ROOT_HOST=%
      - lower_case_table_names=1
      - init-connect='GRANT CREATE USER ON . TO 'root'@'%';FLUSH PRIVILEGES;'

  dockerdeneme:
    container_name: dockerdeneme
    image: dockerdeneme
    build: ./
    restart: always
    deploy:
      restart_policy:
        condition: on-failure
        delay: 10s
        max_attempts: 3
        window: 120s
    ports:
      - '8080:8080'
    environment:
      - MYSQL_ROOT_PASSWORD=1234
      - MYSQL_PASSWORD=1234
      - MYSQL_USER=root
      - MYSQL_DATABASE=mysqlcustomerdb
    depends_on:
      - mysql
volumes:
  cache:
    driver: local

为什么我添加到数据库的旧数据即使我 运行 docker system prune --volumes -a 仍然存在?我是否缺少 docker 撰写文件中的一些命令来刷新数据库,或者我是否需要从项目等中清除一些文件夹?

您正在将主机上的目录装载到 /var/lib/mysql。由于它不是 docker 卷,您无法使用 docker 命令查看它。

删除主机上~/apps/mysql的内容,你的数据应该就没有了。