未安装Mysql docker容器

未安装Mysql docker容器,docker,docker-compose,Docker,Docker Compose,我已经使用docker compose创建了mysql docker容器。我在mysql中构建了容器并创建了一些表。但是,当我重新启动计算机时,我丢失了mysql中的数据(表和数据)。我正在使用容器中的本地文件夹作为卷。但我看到它并没有安装在虚拟容器中 我的操作系统是Windows10Pro。我尝试重新启动Docker桌面和容器,但没有帮助。下面是我正在运行的.yml: version: '3.3' services: db: image: mysql:5.7 restart

我已经使用docker compose创建了mysql docker容器。我在mysql中构建了容器并创建了一些表。但是,当我重新启动计算机时,我丢失了mysql中的数据(表和数据)。我正在使用容器中的本地文件夹作为卷。但我看到它并没有安装在虚拟容器中

我的操作系统是Windows10Pro。我尝试重新启动Docker桌面和容器,但没有帮助。下面是我正在运行的
.yml

version: '3.3'
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: 'db_name'
      MYSQL_USER: 'db_user'
      MYSQL_PASSWORD: 'db_pass'
      MYSQL_ROOT_PASSWORD: 'db_root_pass'
    ports:
      - '3308:3306'
    volumes:
      - ./mysql-log:/var/log/mysql
      - ./dbdata:/var/lib/mysql
    command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']


MySQL docker映像存在一些权限问题。因此,您可以使用MariaDB,它与docker卷一起使用,而不是使用MySQL

在docker compose中,您正在从当前目录装载dbdata,但由于MySQL docker image的docker卷的某些权限问题,该目录将不会装载。 装载到共享文件夹不起作用,因此,请尝试使用/dbdata而不是使用/dbdata

甚至我也面临同样的问题,我将MySQL改为MariaDB,并将我的卷装载到/dbdata,这对我来说很有效。这是我的docker-compose.yml

version: '3'
services:
  mysql:
    image: mariadb
    container_name: mysql
    environment:
      MYSQL_DATABASE: 'movies'
      # So you don't have to use root, but you can if you like
      MYSQL_USER: 'user'
      # You can use whatever password you like
      MYSQL_PASSWORD: '123'
      # Password for root access
      MYSQL_ROOT_PASSWORD: '1234'
    ports:
    # <Port exposed> : < MySQL Port running inside container>
      - '3306:3306'
    expose:
      # Opens port 3306 on the container
      - '3306'
    # Where our data will be persisted
    volumes:
      - /dbdata :/var/lib/mysql
版本:“3”
服务:
mysql:
图片:mariadb
容器名称:mysql
环境:
MYSQL_数据库:“电影”
#因此,您不必使用root,但如果愿意,可以使用root
MYSQL_用户:“用户”
#你可以使用任何你喜欢的密码
MYSQL_密码:“123”
#根访问的密码
MYSQL\u ROOT\u密码:“1234”
端口:
#:
- '3306:3306'
揭露:
#打开容器上的端口3306
- '3306'
#我们的数据将保存在哪里
卷数:
-/dbdata:/var/lib/mysql
在您的情况下,您创建的数据库和表不会持久化。
如果您有表的备份文件,则将该备份文件移动到虚拟机中的/dbdata,然后创建数据库并将该备份文件加载到数据库中

是否从同一目录运行docker compose文件?可能是权限问题。尝试在没有守护程序(-d)的情况下运行。所以你可以看到发生了什么。同时,尝试添加一些数据,查看./dbdata文件夹是否正在更新not@NestorSokil对sir@ManujaJayawardana,先生,我从日志中得到消息:`中止连接2到db:'fin_expert'用户:'db_用户'主机:'172.19.0.1'(读取通信数据包时出错)`问题是我需要从本地卷还原数据。我已修改了答案。安装卷时存在一些问题。它不是为共享文件夹装载的