Не могу подключиться к докеру через ssh с помощью testcontainer - PullRequest
0 голосов
/ 21 марта 2019

Моя задача связана с контейнером через ssh из тестов.

У меня есть dockefile: (почти с https://docs.docker.com/engine/examples/running_ssh_service/)

FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd

RUN echo 'root:root' |chpasswd

RUN sed -i 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

RUN mkdir /root/.ssh    
RUN apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
EXPOSE 22

CMD    ["/usr/sbin/sshd", "-D"]

Затем я использую этот dockerfile от testcontainer:

public static GenericContainer localServer(@NotNull Integer port, @NotNull String user, @NotNull String password, Path dockerfile) {
    return new GenericContainer(
      new ImageFromDockerfile()
        .withFileFromPath("Dockerfile", dockerfile))
      .withExposedPorts(port)
      .withFileSystemBind(FileUtil.getTempDirectory(), "/home/", BindMode.READ_WRITE);

Когда я запускаю тест, контейнер успешно запускается, но я не могу подключиться через ssh. 49154 - это значение от sftp.getMappedPort(22)

ssh root@localhost -p 49154 

Got: SSH: подключение к локальному порту хоста 32836: соединение отказано

Что за деталь я пропустил? Спасибо!

1 Ответ

0 голосов
/ 22 марта 2019

.withExposedPorts(port) - кажется, что вы пытаетесь экстернализовать порт, а ваш образ определяет статический порт "22".

Используйте взамен .withExposedPorts(22).

...