具有Docker-compose的MySQL数据库的默认书写位置

时间:2018-07-08 21:37:51

标签: docker docker-compose

我的docker-compose.yml中有以下节点:

mysql:
    image: mariadb:latest
    ports:
        - "3306:3306"
    environment:
          - MYSQL_USER=bla
          - MYSQL_PASSWORD=blubb
          - MYSQL_ROOT_PASSWORD=blubb
          - MYSQL_DATABASE=blubb
    volumes:
      - ./docker/data:/data
      - ./docker/builds/mysql/my.cnf:/etc/mysql/my.cnf
      - ./docker/mysql:/var/lib/mysql

请参阅最后一行:- ./docker/mysql:/var/lib/mysql。 如果我把这行放在那里,我的数据库将永久保存在我的硬盘上。如果我将其保留下来,Docker会将文件写入其$ HOME上的一个不可见文件夹(即/home/user/xxx/.docker/container/mysql/whatever)吗?

1 个答案:

答案 0 :(得分:2)

默认值为/var/lib/docker下的系统控制目录。如果您处于Docker Toolbox或Docker Machine环境中,而Docker在VM下运行,则该目录路径位于VM内部。 Docker在某些地方以复杂的方式控制着该目录树,您通常不应直接在其中进行任何操作。

反过来,发生这种默认情况是因为MySQL Dockerfile包含行VOLUME ["/var/lib/mysql"],这会导致Docker自动创建该存储。否则,唯一的持久性存储是在docker run -vvolumes:部分中明确声明的存储。