SSH 进入 Docker?或 docker 在 SSH 上?我需要命令

SSH into Docker? or docker on SSH? and I need command

我是 DL 新手,docker 甚至不熟悉 Linux 和互联网事物(SSH 和端口.. DNS 事物.. 其中一部分只存在于我的脑海中).因此,我会对 "specific explanation + command"(或参考站点)非常满意。

我的基本问题是:

  1. Docker 和 SSH 之间的高级概念是什么? (在 Docker 上使用 运行ning SSH?或在 SSH 上使用 运行ning Docker?或者两者都可以?)

  2. 如果要使用SSH+Docker+Pytorch+Jupyternotebook+visdom,具体应该使用哪个命令?

    2-1) 我先 运行 SSH(这是我实验室的服务器,因此我通常不是 root 用户,所以如果我想 运行 python 文件,我经常遇到权限被拒绝的情况),比如说 SSH 地址是 123.456.789.999

    2-2) 在 运行ning ssh 之后使用 docker (然而,我从许多帖子中发现是关于 运行ning docker FIRST 然后访问SSH..有什么不同?)

    2-2-1) 所以为此,我现在必须拉出一个包含 pytorch、jupyternotebook 的图像。我做到了

    2-2-2) 我需要 运行 DOCKER 使用带有正确命令行的图像。让我困惑的就在这里。

    $docker run -it --[name] -p 8888:8888 [docker_image_with_pytorch]
    

这是我发现的。我假设使用 jupyter notebook(假设我想使用 4444 而不是 8888,而 visdom 是 5555 而不是 8097)那么我需要将端口从主机映射到 docker 两次,对吗?

$docker run -it --[name] -p 4444:8888 -p 5555:8097 [docker_image_with_pytorch]

最后我需要link SSH(假设 SSH 端口 num:22 一般情况下,ip:123.456.789.999,id=heyjude)用于 SSH ,我还在下面找到了命令。

$ ssh -L <host port>:localhost:<remote port> user@remote

但是在 运行ning docker 之后使用命令而不是在我第一次 运行 docker 时添加选项是普遍的吗? 另外,如果我假设使用该命令来设置 SSH,我很困惑我需要输入哪些内容;( (主机端口=22?对于SSH?本地主机只是文字表达?远程端口是任意的东西?)下面是我的假设..

$ ssh -L <22>:localhost:<12345> heyjude@123.456.789.999 

我知道它很乱,你可能会发现我的想法是多么扭曲.. 从头开始解释对我很有帮助..

谢谢。

你的问题很广泛而且有些不清楚。

如果您提出具体问题,这是一个很好的做法(您可能会收到有用的回复)。

我鼓励你Google其中一些主题("What is Docker?"、"What is SSH?")。

也就是说,因为您是菜鸟,所以我将猜测您要解决的问题。

假设 (!) 你有一个包含 PyTorch 和 Jupyter 及其所有依赖项的容器镜像,Jupyter 很可能会通过 Web 服务器(我怀疑是通过 HTTP)通过端口 :8888.

如果您 docker run -it ... 相当于 docker run --interactive --tty ...,您应该会看到容器中 运行ning 进程的日志输出。这些日志应包含相关信息。

容器在您的位置工作站上 运行ning 后要访问 Jupyter notebook,您应该能够只浏览 http://localhost:8888.

如果您运行在本地安装所有内容,您可能不需要使用 SSH。如果你 运行ning 例如docker 容器,在远程主机上,您 可以 首先通过 SSH 连接到远程主机,运行 命令,例如docker run... 但您 可以 或者简单地配置您的 Docker 客户端以访问远程 Docker 引擎。

有点类似于SSH,在使用Docker容器时,可以在容器中执行命令。但是,您可以使用 docker exec ....;您不需要使用 SSH 与容器交互。

容器映像具有一个或多个静态定义的端口,容器将使用这些端口来公开其服务(通过 TCP|UDP)。当您 运行 容器时,您可以将容器端口映射到主机上的不同端口。这可能是出于必要(如果容器端口已在您的主机上使用)或只是为了方便。为此,您可以使用 --publish=[HOST-PORT]:[CONTAINER-PORT]。对于给定的容器映像,您无法更改 [CONTAINER-PORT],但可以使用任何可用的 [HOST-PORT]。在您的示例中,--publish=4444:8888 意味着 Jupyter (?) 服务现在可以通过 localhost:4444 在您的本地计算机上访问。 Docker 端口将流量从主机的 :4444 转发到容器的 :8888

HTH!