使用Docker中的本地文件系统和MySQL数据库,tensorflow,Windows 10

时间:2016-06-10 23:03:00

标签: windows docker windows-10 docker-machine

我最近切换到了一台新的(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. 我无法弄清楚如何在我运行的Docker容器中使用和修改现有的jupyter笔记本。
  2. 我不知道如何连接到我在我的机器上运行的MySQL数据库。
  3. 对于 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 仍然存在。

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解释了你是如何做到的。