【问题标题】:Can SSH in but not out of docker container: network unreachable可以SSH进入但不能退出docker容器:网络无法访问
【发布时间】:2016-07-20 22:10:16
【问题描述】:

这里是真正的 docker noob,试图获得一个可以通过 SSH 访问的 ubuntu 容器。

我正在使用使用 this dockerfile 的图像并使用它构建和运行它

docker build -t sshable ~/PATH/" and "docker run --name test -t sshable  

我可以通过 ssh 连接到主机和其上的虚拟机以及运行相同映像的其他容器。但是,当我尝试从主机ssh IP_ADDR 时,IP_ADDR 是容器的 eth0 中以“inet addr”给出的 IP 地址(使用 ifconfig 时)它不能,说ssh: connect to host IP_ADDR port 22: Network is unreachable。我也可以从容器中 ping 出来,但在超时时不能进入它们。主机不在桥接网络上,如果是,我该如何打开它?

【问题讨论】:

标签: ubuntu networking ssh docker containers


【解决方案1】:

试试这个

$ docker run --name test -p 22:22 sshable 

或者您也可以检查映射的 docker 端口

$ docker run --name test sshable
$ docker port sshable 22
0.0.0.0:49154

然后您可以在端口 49154 上的容器 IP 地址上以 root 身份 ssh(在这种情况下)

$ ssh root@192.168.1.2 -p 49154

【讨论】:

  • 我已经这样做了,它仍然给出了网络无法访问的相同错误。我不能使用主机的端口 22,因为它声称它“已经在使用”,所以我尝试了其他一些罐子,如 49154 2222 等,并试图通过它们进行 ssh 无济于事。我也尝试过暴露所有端口并简单地 ping 容器,这也因同样的原因而失败。要补充一点,我使用 xhyve 的本机虚拟化直接在 mac El Capitan 上运行 docker,而不是 virtualbox 上的 docker 默认 VM。运行版本 1.12.0-rc4-beta20 (build:10404)。
【解决方案2】:

当你运行容器时

docker run --name test -t sshable

此容器公开端口 22,但不附加到主机上的任何端口。这意味着如果您启动另一个容器,例如

docker run -it ubuntu:14.04

您将能够从这个 ubuntu 容器 ssh 到您的容器。但是,如果您从 VM 内部运行 Docker,您将无法从 VM 外部通过 ssh 进入您的容器。为此,您需要将 ssh 容器附加到该 VM 上的某个端口

docker run --name test -p 22:22 sshable

现在您可以使用 ssh <vm-ip> SSH 进入此容器。

【讨论】:

  • 我已经这样做了,它仍然给出了网络无法访问的相同错误。我不能使用主机的端口 22,因为它声称它“已经在使用”,所以我尝试了其他一些罐子,如 49154 2222 等,并试图通过它们进行 ssh 无济于事。我也尝试过暴露所有端口并简单地 ping 容器,但同样的原因也失败了。要补充一点,我使用 xhyve 的本机虚拟化直接在 mac El Capitan 上运行 docker,而不是 virtualbox 上的 docker 默认 VM。运行版本 1.12.0-rc4-beta20 (build:10404)。
  • 您是否尝试过运行 docker ps 以查看容器连接到主机的哪个端口,然后尝试 sshing 到该端口?
  • 是的,我有。 0.0.0.0:49154->22/tcp 在“端口”下。我已经完成了 ssh root@172.17.0.2 -p 49154 (即 172... 是 ip)。它因完全相同的“网络无法访问”错误而失败。
猜你喜欢
  • 2021-01-16
  • 1970-01-01
  • 2018-12-09
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 2021-05-22
  • 2015-12-27
相关资源
最近更新 更多