Windows的Docker-安装目录为空

时间:2018-12-18 09:51:11

标签: docker docker-compose boot2docker docker-windows

我有一个装有MYSQL的映像。我需要将/ var / lib / mysql目录映射到我的主机系统。以下是我使用以下命令时在该目录中看到的屏幕截图

  

docker run --rm -it --env-file = envProxy --network mynetwork --name my_db_dev -p 3306:3306 my_db / bin / bash

Screenshot of the Docker container without mount from the same image

现在,当我尝试从主机(Windows 10)挂载目录时,通过从同一映像运行另一个容器,mysql目录为空。

  

docker run --rm -it --env-file = envProxy --network mynetwork -v D:/ docker / data:/ var / lib / mysql --name my_db_dev1 -p 3306:3306 my_db / bin / bash

也尝试过此方法,但没有效果

  
    

docker run --rm -it --env-file = envProxy --network mynetwork -v D:\ docker \ data:/ var / lib / mysql --name my_db_dev1 -p 3306:3306 my_db / bin / bash

  

enter image description here

我看到的一件事是,路径中的mysql目录现在具有root用户,而不是前面的情况。

我希望将现有容器(mysql目录)中的所有内容复制回主机安装目录

那可能吗?以及如何实现?

4 个答案:

答案 0 :(得分:0)

如果您需要将文件 从容器中放入主机,最好使用docker cp命令:https://docs.docker.com/engine/reference/commandline/cp/

它看起来像: docker cp my_db_dev1:/var/lib/mysql d:\docker\data

UPD

  

实际上,我想将数据库文件保存在其他容器中,   所以我想使用音量

在这种情况下,您必须:

  1. 开始使用docker-compose来编排容器。

  2. docker-compose.yml中创建卷,该卷在所有容器之间共享。像这样:

docker-compose.yml

version: '3'
services:
  db1:
    image: whatever
  volumes:
    - myvol:/data

  db2:
    image: whatever2
  volumes:
    - myvol:/data

volumes:
  myvol:  

说明:https://docs.docker.com/compose/compose-file/#volume-configuration-reference

答案 1 :(得分:0)

使用Windows路径写反斜杠“ \”,建议使用变量指定路径。在Linux的另一端,使用斜杠“ /”,例如:

docker run -it -v %userprofile%\work\myproj\some-data:/var/data

答案 2 :(得分:0)

Docker Desktop(2.0.0.3(31259))上存在相同问题。我从this issues得到了解决方案。

  

我确保容器已停止,打开了docker设置,选择了“ Shared Drives”,删除了“ C”上的勾号,然后再次添加了它。 Docker要求提供Windows帐户凭据,我输入了新的凭据。之后,启动容器,安装卷就可以了。问题解决了。

It只需重置Docker Settings中的凭据,就可以更简单地解决问题。

答案 3 :(得分:0)

尝试关闭防病毒程序或防火墙。然后单击设置/共享驱动器下的“重置凭据”。 那对我有用。

最诚挚的问候。