Как подключиться по SSH к Docker-контейнеру

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

Таким образом, у вас есть пакет образа контейнера Docker со всеми необходимыми зависимостями и библиотеками. Вы можете удаленно разработать приложение или запустить виртуальную машину Linux, получив доступ к контейнеру Docker через SSH. Итак, в этом руководстве мы объясним, как создать SSH в контейнере Docker.

Как подключиться по SSH к Docker-контейнеру

Прежде чем мы начнем, вам необходимо зайти сюда, создать контейнер Docker и настроить для него аутентификацию по паролю. Итак, запустите следующую команду, чтобы создать файл Docker:

touch Dockerfile

Теперь запустите редактор nano и введите следующие данные, чтобы настроить контейнер Docker:

FROM ubuntu:22.04
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:12345' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
ENTRYPOINT service ssh start && bash

создание-docker-файла

В приведенных выше данных замените «root» на имя пользователя и 12345 на пароль. После сохранения файла выполните следующую команду, чтобы создать образ Docker вашего контейнера:

docker build -t my_ssh .

создание-docker-образа

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

docker run -d --name container_name container_image

Замените имя_контейнера и изображение_контейнера на соответствующее имя и изображение вашего Docker. Далее вам потребуется, чтобы IP-адрес этого контейнера Docker использовался в качестве аргумента в команде SSH. Получите его, выполнив следующую команду проверки Docker:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name

В приведенной выше команде вам не нужно ничего менять, кроме имя_контейнера, которое должно быть именем вашего Docker. При запуске будет отображаться IP-адрес вашего Docker-контейнера, который вы должны скопировать и использовать в команде SSH.

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

sudo apt update
sudo apt install openssh-server -y
sudo systemctl enable openssh-server

Наконец, сгенерируйте ключ SSH с помощью ssh-keygen (если у вас его еще нет), скопируйте путь к этому ключу и используйте команду ssh для SSH в Docker.

sudo ssh -i /path/to/SSH_key remote_user@docker_IP

Здесь опция «-i» позволяет указать путь к файлу ключа. Вы должны заменить /path/to/SSH_key на путь к сгенерированному ключу, Remote_user на ваше имя пользователя в Docker и docker_IP на IP-адрес, который вы получили на предыдущих шагах.

Приведенная выше команда при запуске успешно установит SSH-соединение с указанным контейнером Docker. Теперь вы можете взаимодействовать с его системой с помощью оболочки.

Краткий обзор

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