По сути, измените ваш Dockerfile на что-то вроде следующего - это установит openssh-сервер, изменит запретительные конфигурации по умолчанию и запустит службу:
# FROM a-image-with-mssql
RUN echo "root:toor" | chpasswd
RUN apt-get update
RUN apt-get install -y openssh-server
COPY entrypoint.sh .
RUN cd /;wget https://gist.githubusercontent.com/spekulant/e04521d6c6e1ccffbd3455c673518c5b/raw/1e4f6f2cb32caf3a4a9f73b02efdcbd5dde4ba7a/sshd_config
RUN rm /etc/ssh/sshd_config; cp sshd_config /etc/ssh/
ENTRYPOINT ["./entrypoint.sh"]
# further commands
Теперь у вас есть изображение с ssh-сервером внутри, все, что вам нужно сделать, это запустить службу, вы не можете сделать RUN service ssh start
, потому что она не будет работать - особенности докера, обратитесь к документации. Вы должны использовать Entrypoint следующим образом:
#!/bin/bash
set -e
sh -c 'service ssh start'
exec "$@"
Поместите его в файл entrypoint.sh
рядом с вашим Dockerfile
- не забудьте chmod 755 entrypoint.sh
это. Здесь нужно упомянуть одну вещь: вы все равно не сможете войти в контейнер по ssh - конфигурация сервера SSH по умолчанию не позволяет войти в корневую учетную запись с использованием пароля. Таким образом, вы либо сами меняете конфиги и предоставляете их образу, либо можете доверять мне и использовать созданный мной файл - проверить его по ссылке из Dockerfile - там нет ничего вредоносного, только изменение с prohibit-password
на yes
.
К счастью для нас - официальные образы MSSQL начинаются с Ubuntu, поэтому все приведенные выше команды идеально вписываются в среду.
Редактировать
Обязательно спросите, если что-то неясно или я прыгаю слишком быстро.