【问题标题】:Docker Desktop on Mac issue with ssh to centos container on localhostMac 上的 Docker 桌面问题与 ssh 到本地主机上的 centos 容器
【发布时间】:2021-06-02 04:42:29
【问题描述】:

我知道在 SO 上有类似的问题,但许多建议对我没有用。我正在运行 Docker Desktop for Mac 并启动了一个我构建的 docker 容器,该容器配置并运行了 ssh(我使用这些容器连接到 AWS、Azure 等)。我使用类似的东西启动容器(ubc/jlbase/jlbase 映像具有 ssh 配置......并且以下所有内容都适用于具有 docker0 网络的 linux 机器)

docker run -P --name test -d ubc/jlbase/jlbase
docker inspect test |grep IP
ping -c *the_ip_from_above*

没有连接。据我所知,这是 Mac 上 Docker 的一个已知问题……但我找到的帮助和链接似乎并不能解决问题。谁能告诉我我错过了什么?

【问题讨论】:

  • docker inspect IP 地址主要是一个实现细节,在任何操作系统上都不需要它。您应该能够通过其docker run -p 发布的端口访问容器。

标签: macos docker ssh localhost desktop


【解决方案1】:

您可以说这是 Mac 上 Docker 的已知功能,而不是问题。 Mac 上的 Docker 运行在 macOS 内部的虚拟机上,因此您收到的 IP 地址是 VM 内部容器的 IP,而不是 macOS。

从问题中解决两个问题:

如何开启 ssh

为了能够在您的容器上使用ssh,您需要在容器中运行sshd 并发布端口22。检查here,了解如何使用已准备好的容器尝试此操作

如何 ping

由于 docker 在 VM 中运行,为了能够将流量路由到容器,您需要设置网络层来路由流量。一种方法是在 VM 和机器之间创建一个隧道。

这是更复杂的设置,需要 CNF(Conteinerized Network Function)的帮助。为这个问题创建的最简单的 CNF 之一是 soctun,它在主机和 docker 网络层之间创建了一条隧道。

【讨论】:

  • 感谢您的链接。我必须使用特定的“-p”设置来公开端口...... -P 似乎不起作用(从某种意义上说,docker port 22 表示没有公开端口。顺便说一句,根密码不是“root”....我错过了什么吗?
  • 你可以试试docker run -d -p 22000:22 --name test_sshd rastasheep/ubuntu-sshd:14.04ssh root@localhost -p 22000。在这个容器中,密码是root
  • 对于您的特定镜像,如果没有准备好sshd,您需要安装,启用/配置sshd并导出端口22,然后您就可以使用它了以同样的方式。
  • 那么通过这个程序...我可以ping 容器吗?我应该使用哪个命令?我想用 ping 测试一下,这样我就可以更好地弄清楚发生了什么。再一次....在 docker 的 linux 安装上直接启动我的 docker 映像(它已配置 sshd)以一种相当简单的方式进行 ping 工作。这些建议中是什么解决了与在 mac 上运行的 Docker Desktop 的差异。我问是因为我需要为运行 docker 的 Windows 机器解决这些问题。谢谢!
  • 答案已更新以解决ping 问题
猜你喜欢
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 2014-07-03
  • 2018-04-12
  • 1970-01-01
  • 2022-01-07
  • 2023-01-20
  • 2015-05-30
相关资源
最近更新 更多