【问题标题】:Unable to SSH into Docker container running Alpine Linux 3.10无法通过 SSH 连接到运行 Alpine Linux 3.10 的 Docker 容器
【发布时间】:2020-06-03 02:09:20
【问题描述】:

我在使用 SSH 连接到运行 Alpine Linux 3.10 的 Docker 容器(来自 this image)时遇到问题。

此连接必须使用 SSH,因为我使用的是备份软件 barman,它需要 SSH 连接到在 Docker 容器内运行的 PostgreSQL 11 数据库。

首先我使用连接到 docker 容器

docker exec -it <container_name> /bin/bash

然后尝试重新安装并启动sshd

bash-5.0# apk add openssh --no-cache
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
OK: 117 MiB in 42 packages

bash-5.0# apk add openrc --no-cache
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
OK: 117 MiB in 42 packages

bash-5.0# rc-update add sshd
 * rc-update: sshd already installed in runlevel `sysinit'; skipping

bash-5.0# /etc/init.d/sshd start
 * WARNING: sshd is already starting

但是,我无法从 Docker 容器内连接到本地 sshd 服务器

# ssh root@127.0.0.1
ssh: connect to host 127.0.0.1 port 22: Connection refused

同样,从 Ubuntu 主机通过 SSH 连接到 Docker 容器也会失败。

$ ssh postgres@172.26.0.4
ssh: connect to host 172.26.0.4 port 22: Connection refused

其中 172.26.0.4 是在 Docker 容器内运行 ifconfig 时显示的 IP 地址。

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 在 linux 系统中,正在运行的映像位于内存中 - 因此重新安装它并不会替换正在运行的内容......只有磁盘上的内容。您应该停止守护程序,然后重新启动它。然后尝试连接。
  • 你为什么需要做这个问题
  • @johnharris85 更新问题的原因:我正在使用备份软件barman,它需要通过 SSH 连接到在 Docker 容器内运行的 PostgreSQL 11 数据库。

标签: linux docker ssh openssh alpine


【解决方案1】:

我没有下载您所指的图像,但使用默认的 docker alpine-image 工作。要让 ssh 在容器内运行,需要执行一些额外的步骤 - 您很有可能需要采取相同的步骤:

ssh-keygen -A
rc-status
touch /run/openrc/softlevel
/etc/init.d/sshd start

【讨论】:

    【解决方案2】:

    如果您将 --net=host 与 docker run 命令一起使用,可能与您的问题有关:

    在我们的 Ubuntu 容器中运行 SSH 服务器时,我们遇到了类似的问题。 我们意识到容器主机上的 SSH 服务器正在运行,并且它使用了容器的 SSH 服务器想要使用的相同端口。

    我们更改了 SSH 服务器使用的端口来解决这个问题。

    请注意,我们的 Docker 容器使用了 --net=host,因此容器和主机的 IP 地址相同。因此,2 台 SSH 服务器争夺一个端口,导致容器内的服务器无法正常启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 2015-09-19
      • 2017-06-07
      • 2020-03-28
      相关资源
      最近更新 更多