linux - 无法通过 SSH 连接到运行 Alpine Linux 3.10 的 Docker 容器
问题描述
我在使用 SSH 连接到运行 Alpine Linux 3.10的 Docker 容器(来自此图像)时遇到问题。
此连接必须使用 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
但是,我无法sshd
从 Docker 容器内连接到本地服务器
# 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 是在ifconfig
Docker 容器内运行时显示的 IP 地址。
有什么想法可以解决这个问题吗?
解决方案
我没有下载您所指的图像,但使用默认的 docker alpine-image 工作。要让 ssh 在容器内运行,需要执行一些额外的步骤 - 您很有可能需要采取相同的步骤:
ssh-keygen -A
rc-status
touch /run/openrc/softlevel
/etc/init.d/sshd start
推荐阅读
- javascript - 带有返回承诺的承诺的可取消超时
- javascript - 如何在 Svelte 中使用开关渲染组件?
- java - Java 17 中的 ForkJoinPool 性能
- stored-procedures - 有没有办法在雪花中并行执行存储过程
- react-native - 有没有办法在领域中以正确的方式呈现 One2Many 关系?
- java - XML - SimpleFramework 解析为 Kotlin/JAVA
- python - Python中止的线程卡住了
- android - Android:蓝牙更改事件发生在 AudioManager 更改之前
- typescript - 在打字稿中手动设置值对象的属性
- python - 如何在 Pandas 中将两个单独的单元格合并为一个奇异的组合值