我最近切换到了一台新的(Windows 10)计算机,需要进行一些我在tensorflow中所做的开发。 The only way that I can find to run tensorflow is through Docker,我工作得很好(与链接文章略有不同)docker run -d -P engineero/tensorflow:df_build
(我的图像通过修改主repo的Dockerfile来引入一些额外的依赖关系)。但是我还有两个问题:
对于 1 ,我尝试将-v /c/Users/path/to/my/files:/tensorflow/my_files
添加到docker run
命令以及/c/Users/path/to/my/files/*:/tensorflow/my_files
。对于这两个,我在我的VM中获得了一个/tensorflow/my_files
目录,但它是空的。我需要能够使用我文件系统中的现有笔记本(以及其他一些文件),并对我的文件系统中的这些文件进行更改。
对于 2 ,我真的不知道。 MySQL数据库当前正在Windows localhost
上运行,但是如果我在脚本中引用localhost
来连接数据库,那么它将尝试连接到守护进程(我认为),这是不一样的:docker-machine ip
没有给我127.0.0.1(从Windows的角度来看localhost
),我必须为jupyter笔记本连接的IP /端口是我从{{{ 1}}和docker-machine ip
。
非常感谢任何帮助。如果我完全在错误的页面上,我会欢迎一些关于正确方法的讨论。我现在正在研究Docker documentation,但到目前为止我还没有找到解决方案。
编辑:号码 2 已被回答,但号码 1 仍然存在。
答案 0 :(得分:2)
我没有在Windows上使用Docker,所以我无法回答你的第一个问题。但是,我可以回答你的第二个问题。当您在Windows / Mac上运行Docker时,它会在您可能已经知道的情况下在VM内运行。当您调用docker run
时,它会创建一个可以被视为另一个VM的容器(实际上不是VM,但仅出于某些目的)。因此,当您从容器内部引用localhost
时,它将尝试连接到该容器内的localhost
。要克服这种情况,你应该使用VM的IP地址(Mac的192.168.99.100,我猜它也适用于Windows),无论你从docker-machine ip
得到什么IP地址。如果您碰巧使用Linux,则应使用主机的实际IP地址。
我根据您的评论编辑了以下内容。只有在Docker中运行MySQL时,上述情况才适用。如果您尝试连接到本机运行的MySQL,您应该使用PC的实际IP地址(您可以在Windows上的命令提示符下使用ipconfig
找到),而不管操作系统如何。
我不确定你对VM的概念有多熟悉。虚拟机就像是独立的PC,不同之处在于它们在PC内部运行。如果您想通过PC与另一台PC通信,最简单的方法是使用外部IP地址。 附:您还应该允许MySQL接受远程连接。 This link解释了你是如何做到的。