【发布时间】: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