我有一个装有MYSQL的映像。我需要将/ var / lib / mysql目录映射到我的主机系统。以下是我使用以下命令时在该目录中看到的屏幕截图
docker run --rm -it --env-file = envProxy --network mynetwork --name my_db_dev -p 3306:3306 my_db / bin / bash
现在,当我尝试从主机(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
我看到的一件事是,路径中的mysql目录现在具有root用户,而不是前面的情况。
我希望将现有容器(mysql目录)中的所有内容复制回主机安装目录
那可能吗?以及如何实现?
答案 0 :(得分:0)
如果您需要将文件 从容器中放入主机,最好使用docker cp
命令:https://docs.docker.com/engine/reference/commandline/cp/
它看起来像:
docker cp my_db_dev1:/var/lib/mysql d:\docker\data
实际上,我想将数据库文件保存在其他容器中, 所以我想使用音量
在这种情况下,您必须:
开始使用docker-compose
来编排容器。
在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)
尝试关闭防病毒程序或防火墙。然后单击设置/共享驱动器下的“重置凭据”。 那对我有用。
最诚挚的问候。