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

我最近换了一个新的(Windows 10)电脑,需要拿出一些我在做tensor的开发。 我可以find运行tensorflow的唯一方法是通过Docker ,我已经工作得很好(有点不同于链接的文章)与docker run -d -P engineero/tensorflow:df_build (通过修改主要回购Dockerfile引入一些额外的依赖关系)。 但是,我还有两个问题:

  1. 我不知道如何使用和修改我运行的Docker容器中的现有jupyter笔记本。
  2. 我不知道如何连接到我的机器上运行的MySQL数据库。

对于我已经尝试添加-v /c/Users/path/to/my/files:/tensorflow/my_files-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 does not give我127.0.0.1( localhost从Windows的angular度来看),我必须连接到Jupyter笔记本的IP /端口是从docker docker-machine ipdocker ps -l得到的一些其他地址。

任何帮助将不胜感激。 如果我完全错误的页面,我会欢迎一些正确的方式来讨论这个问题的讨论。 我正在通过Docker文档工作,但到目前为止我还没有find解决scheme。

编辑: 2号已被回答,但1号仍然逍遥法外。

我没有在Windows上使用Docker,所以我不能回答你的第一个问题。 不过,我可以回答你的第二个问题。 在Windows / Mac上运行Docker时,如果您已经知道,它将在虚拟机内部运行。 当你调用docker run ,它会创build一个可以被视为另一个VM的容器(实际上并不是一个虚拟机,但仅用于某些目的)。 所以,当你从容器内引用localhost时候,它会尝试连接到容器内的localhost 。 为了克服这种情况,你应该使用虚拟机的IP地址(对于Mac来说,192.168.99.100,对于Windows来说,我猜也是一样的),不pipe你从docker-machine ip得到的IP地址是什么。 如果您碰巧使用Linux,则应使用主机的实际IP地址。

我根据你的评论编辑了以下内容。 只有在Docker中运行MySQL时,以上才是真实的。 如果您尝试连接到本机运行的MySQL,则应使用PC的实际IP地址(可在Windows上的命令提示符下使用ipconfig查找),而不考虑操作系统。

我不确定你对虚拟机的概念有多熟悉。 虚拟机就像独立的个人电脑,但不同之处在于他们在个人电脑内运行。 如果您想从PC上与另一台电脑通话,最简单的方法是使用外部IP地址。 ps你也应该允许你的MySQL接受远程连接。 这个链接解释了你是如何做到的。