2017-08-10 66 views
0

我对Docker非常陌生,在阅读了关于数据量之后,我仍然对我看到的行为感到困惑。Docker on Windows数据持久性 - 主机映射vs数据量

在我撰写文件,我有这样一个MySQL的条目:

db: 
    image: mysql 
    restart: always 
    volumes: 
    - ./database:/var/lib/mysql 
    environment: 
    MYSQL_ROOT_PASSWORD: p4ssw0rd! 
    networks: 
    - back 

这映射/数据库目录/var/lib/mysql。创建的数据库文件,我可以启动Wordpress,安装,添加一篇文章。这个问题,因为它从来没有坚持任何创建的数据。如果我重新启动泊坞窗和执行:

docker-compose up -d

数据库是空的。

此更改为:

db: 
    image: mysql 
    restart: always 
    volumes: 
    - db_data:/var/lib/mysql 
    environment: 
    MYSQL_ROOT_PASSWORD: p4ssw0rd! 
    networks: 
    - back 

而且在这样的量加入:

volumes: 
    db_data: 

现在仍然存在的泊坞数据量的数据,并重新启动工作。在上次运行期间创建的任何数据仍然存在。

我如何得到这个使用主机映射目录的工作?

我在思考使用卷的第二个例子是正确的吗?

回答

0

Windows上的Docker卷的工作方式与Linux不同。基本上在Windows上,docker运行一个虚拟机,docker安装在虚拟机内部。所以在你看来,你在Windows上本地运行docker命令,但实际的东西发生在VM内部的后台。

docker run -v d:/data:/data alpine ls /data 

首先,您需要在docker设置中使D:共享。你可以找到详细的文章,解释的步骤,这样做

https://rominirani.com/docker-on-windows-mounting-host-directories-d96f3f056a2c

+0

是啊,我把所有的共享主机驱动作用。我可以看到所有文件都被加载到'\ database'目录中。我只是感到困惑,为什么它似乎在每次启动时重写这些文件。 – Jammer