适用于Windows的Docker - Mount目录为空

问题描述 投票:0回答:2

我有一个安装了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。

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

那可能吗 ?如何实现?

docker docker-compose boot2docker docker-windows
2个回答
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中,您可以创建卷,该卷在所有容器之间共享。就像是:

泊坞窗,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


0
投票

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

docker run -it -v %userprofile%\work\myproj\some-data:/var/data
© www.soinside.com 2019 - 2024. All rights reserved.