Невозможно S SH в Docker контейнер с Alpine Linux 3.10 - PullRequest
0 голосов
/ 19 февраля 2020

У меня проблемы с использованием S SH для подключения к Docker контейнеру (из это изображение ) под управлением Alpine Linux 3.10.

S SH должно использоваться для этого соединения, так как я использую программное обеспечение резервного копирования barman, для которого требуется подключение S SH к базе данных PostgreSQL 11, работающей внутри контейнера Docker.

Сначала я подключился к контейнеру 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

Аналогичным образом происходит сбой подключения к контейнеру Docker через S SH с хост-машины Ubuntu.

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

, где 172.26.0.4 - это IP-адрес, отображаемый при запуске ifconfig внутри контейнера Docker.

Есть идеи, как мы можем решить эту проблему?

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Может иметь отношение к вашей проблеме, если вы использовали --net = host вместе с docker командой run:

Мы столкнулись с похожими проблемами при запуске сервера S SH внутри нашего контейнера Ubuntu. Мы поняли, что сервер S SH на хосте контейнера работает и использует тот же порт, который хотел использовать сервер S SH контейнера.

Мы изменили порт, используемый сервером S SH Чтобы решить эту проблему.

Обратите внимание, что наш контейнер Docker использовал --net = host и, следовательно, и контейнер, и хост имели одинаковый IP-адрес. Следовательно, 2 сервера S SH боролись за один порт, и это не позволяло серверу в контейнере запускаться должным образом.

1 голос
/ 19 февраля 2020

Я не загружал изображение, на которое вы ссылаетесь, но работал по умолчанию docker alpine-image. Чтобы s sh работал внутри контейнера, потребовалось несколько дополнительных шагов - есть хороший шанс, что вам нужно предпринять то же самое:

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