Не удается получить ssh-доступ к док-контейнеру GlassFish 4.1

Я построил докер-контейнер GlassFish 4.1 через Dockerfile, подробности здесь http://bderzhavets.blogspot.ru/2015/01/dockerfile-for-glassfish-41.html

Glassfish сам по себе работает нормально, однако

*** Running /etc/my_init.d/00_regen_ssh_host_keys.sh...
No SSH host key available. Generating one...
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Creating SSH2 ECDSA key; this may take some time ...
Creating SSH2 ED25519 key; this may take some time ...
invoke-rc.d: policy-rc.d denied execution of restart.

Попытка ssh

ssh -v root@localhost -p 49160
OpenSSH_6.4, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Local version string SSH-2.0-OpenSSH_6.4
. . . . . . . .
ssh_exchange_identification: Connection closed by remote host

Я не знаю, как решить проблему, показывая в журнале и влияя на подключение SSH.

2 ответа

Из-за изображения phusion / baseimage не предоставляет готовый демон sshd для https://github.com/phusion/baseimage-docker я попробовал обходной путь, упомянутый здесь https://github.com/phusion/baseimage-docker и получил:-

[root@junolxc ~]# docker run -d -p 49160:22 -p 49161:4848  -p 49162:8080 -p 49163:8181 boris/docker-glassfish41 --enable-insecure-key
693176ea6596bf33b880dc0f58250f47fe2e35ed95f44fcd80a62eeaa3fe17a4
2015/01/08 12:26:32 Error response from daemon: Cannot start container 693176ea6596bf33b880dc0f58250f47fe2e35ed95f44fcd80a62eeaa3fe17a4: exec: "--enable-insecure-key": executable file not found in $PATH

Я просто взломал систему, добавив в Dockerfile:-

RUN echo "/usr/sbin/sshd > log &" >> /etc/my_init.d/00_regen_ssh_host_keys.sh

Другой вариант не трогать 00_regen_ssh_host_keys.sh.
Создайте в папке сборки скрипт 01_sshd_start.sh


#!/bin/bash
/usr/sbin/sshd > log &

and insert in Dockerfile:-

ADD 01_sshd_start.sh /etc/my_init.d/

Я полагаю, что порт 22 уже будет занят системной службой "sshd", выполняющей последний хак, мне не очень поможет. Тем не менее, это сделал. Я утверждаю, что эта система по некоторым причинам не запускает SSHD при условии, что она есть.

Философия Docker состоит в том, чтобы иметь один сервис на контейнер. Некоторые базовые образы затрудняют запуск служб, с которыми вы, вероятно, сталкивались. Я бы порекомендовал пересмотреть ваш подход и спросить себя, зачем вам демон ssh? Может быть, вы просто хотите использовать Docker Exec? Или, может быть, вам будет лучше, если вы создадите виртуальную коробку с vagrant, наполненную несколькими службами для ваших нужд?

Другие вопросы по тегам