我的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)吗?
答案 0 :(得分:2)
默认值为/var/lib/docker
下的系统控制目录。如果您处于Docker Toolbox或Docker Machine环境中,而Docker在VM下运行,则该目录路径位于VM内部。 Docker在某些地方以复杂的方式控制着该目录树,您通常不应直接在其中进行任何操作。
反过来,发生这种默认情况是因为MySQL Dockerfile包含行VOLUME ["/var/lib/mysql"]
,这会导致Docker自动创建该存储。否则,唯一的持久性存储是在docker run -v
或volumes:
部分中明确声明的存储。