我最近切换到一台新的(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
.对于这两个,我得到一个 /tensorflow/my_files
我的虚拟机中的目录,但它是空的。我需要能够使用我的文件系统中的现有笔记本(和一些其他文件),并将我对这些文件所做的更改保留在我的文件系统上。对于 2 , 我真的不知道。 MySQL 数据库当前在 Windows 上运行
localhost
, 但如果我引用 localhost
在我连接数据库的脚本中,它将尝试连接到守护进程(我认为),这不一样:docker-machine ip
没有给我 127.0.0.1(从 Windows 的角度来看 localhost
),我必须为 jupyter notebook 连接的 IP/端口是我从 docker-machine ip
获得的其他地址和 docker ps -l
.任何帮助将不胜感激。如果我完全在错误的页面上,我会欢迎一些关于正确方法的讨论。我正在处理 Docker documentation现在,但到目前为止我还没有找到解决方案。
编辑:号码 2 已回答,但号码 1 仍然逍遥法外。
最佳答案
我没有在 Windows 上使用过 Docker,所以我无法回答你的第一个问题。不过,我可以回答你的第二个问题。当您在 Windows/Mac 上运行 Docker 时,它会在您可能已经知道的 VM 中运行。当您调用 docker run
,它创建了一个可以被视为另一个 VM 的容器(实际上不是 VM,但仅用于某些目的)。因此,当您引用 localhost
从容器内部,它将尝试连接到 localhost
在那个容器里面。为了克服这种情况,您应该使用虚拟机的 IP 地址(Mac 为 192.168.99.100,我猜 Windows 也一样),无论您从 docker-machine ip
获得的 IP 地址是什么。 .如果你碰巧使用 Linux,你应该使用主机的实际 IP 地址。
我根据您的评论编辑了以下内容。仅当您在 Docker 中运行 MySQL 时,上述内容才是正确的。如果您尝试连接到 native 运行的 MySQL,您应该使用 PC 的实际 IP 地址(您可以在 Windows 的命令提示符下使用 ipconfig
找到该地址),而与操作系统无关。
我不确定您对虚拟机的概念有多熟悉。 VM 就像单独的 PC,但不同之处在于它们在您的 PC 中运行。如果您想从您的 PC 与另一台 PC 通信,最简单的方法是使用外部 IP 地址。
p.s.您还应该允许您的 MySQL 接受远程连接。 This link解释你是怎么做的。
关于windows - 在 Docker、tensorflow、Windows 10 中使用本地文件系统和 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37758247/