Настройка Docker контейнера Ubuntu с доступом по SSH

Docker – это платформа с открытым исходным кодом, которая позволяет разработчикам автоматизировать развертывание, масштабирование и управление приложениями.

Это достигается путем создания легких, самодостаточных контейнеров, которые могут работать практически в любом месте.

SSH (Secure Shell) – это протокол, обеспечивающий безопасный канал через незащищенную сеть, обычно используемый для входа в другой компьютер по сети и выполнения команд.

В этой статье приводится пошаговое руководство по настройке контейнера Ubuntu Docker с доступом по SSH.

Прежде чем мы начнем, вам необходимо установить следующее программное обеспечение:

    • Docker: Вы можете установить Docker, по инструкциям в официальной документации Docker.
    • SSH-клиент: На Linux и MacOS клиент SSH обычно предустановлен. Пользователи Windows могут использовать PuTTY или встроенный SSH-клиент на Windows 10 и более новых версиях.

 

Шаг 1: Скачивание образа Ubuntu

 

Первым шагом будет извлечение образа Ubuntu из Docker Hub.

Docker Hub – это облачная служба регистрации, которая позволяет связывать репозитории кода, детали сборки и многое другое.

Используйте следующую команду:

 

 

docker pull ubuntu

 

 

Шаг 2: Создайте Dockerfile

Dockerfile – это текстовый документ, содержащий все команды, которые пользователь может вызвать в командной строке для сборки.

Вы можете создать новый Dockerfile и открыть его в текстовом редакторе.

Вот пример Dockerfile для настройки SSH в контейнере Ubuntu:

# Используем официальный образа качестве родительского

FROM ubuntu



# Обновим систему

RUN apt-get update && apt-get upgrade -y



# Установим OpenSSH Server

RUN apt-get install -y openssh-server



# Настроим SSH

RUN mkdir /var/run/sshd

RUN echo 'root:THEPASSWORDYOUCREATED' | chpasswd

RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config



# Исправление входа в систему SSH. В противном случае пользователя выкидывает из системы после входа

RUN sed 's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd



ENV NOTVISIBLE "in users profile"

RUN echo "export VISIBLE=now" >> /etc/profile



#Открыть порт SSH

EXPOSE 22



# Запуск SSH

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

 

Замените “THEPASSWORDYOUCREATED” на пароль, который вы хотите использовать для SSH.

Сохраните этот Dockerfile.

 

Шаг 3: Сборка образа Docker

Когда ваш Dockerfile готов, вы можете собрать образ Docker.

 

Используйте следующую команду:

 

 

docker build -t ubuntu-ssh .

 

 

Эта команда создаст образ из вашего Dockerfile и пометит его как ubuntu-ssh.

Шаг 4: Запуск контейнера Docker

Теперь вы готовы запустить свой контейнер Docker с помощью следующей команды:

 

 

docker run -d -p 2222:22 ubuntu-ssh

 

 

Система запустит ваш контейнер Docker в фоновом режиме (-d) и сопоставит порт 2222 вашей машины с портом 22 вашего контейнера Docker, который является портом SSH по умолчанию.

 

Шаг 5: Подключение к контейнеру Docker через SSH

Наконец, вы можете подключиться к своему контейнеру Docker через SSH.

Используйте следующую команду:

 

ssh root@localhost -p 2222

 

Вам будет предложено ввести пароль, который вы задали ранее в Dockerfile. Как только вы его введете, вы будете подключены к вашему контейнеру Ubuntu Docker по SSH!

 

Заключение

Docker и SSH – мощные инструменты в сфере devOps и разработки.

Интегрировав их, вы сможете создать более гибкую, более безопасную и более мощную среду разработки.

. Всегда помните о том, что для обеспечения безопасности и надежности вашей среды необходимо применять эффективные методы защиты, такие как смена паролей по умолчанию и регулярное обновление программного обеспечения.