Изолированные Docker среды через SSH - PullRequest
0 голосов
/ 17 декабря 2018

Я настраиваю серию задач командной строки Linux (для внутреннего использования / обучения), аналогичных тем, что есть в BandThe от OverTheWire.org.Из некоторого чтения, которое я сделал для своей инфраструктуры, они настроили вещи так:

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

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

Я очень новичок в Docker и в принципе понимаю его, но не уверен в том, как настроить подобную систему -особенно порождают новые экземпляры Docker при входе в SSH на сервер, а затем уничтожают экземпляр при выходе из системы / отключении.

Буду признателен за любые советы о том, как спроектировать / реализовать такой вид установки.

1 Ответ

0 голосов
/ 17 декабря 2018

Мне кажется, здесь есть две основные цели.Сначала поймите, что действительно делает докер и как он работает.Во-вторых, система, которая описывает всю систему.

Позвольте мне сделать краткое и краткое введение.Я не буду вдаваться в подробности, но в основном docker - это платформа, которая работает как виртуализация системы, которая позволяет изолировать процесс, операционную систему или целое приложение без какого-либо гипервизора.Контейнер разделяет ядро ​​хост-системы, и все, что он содержит, является изолированным от хоста и остальных контейнеров.

Итак, основной принцип, который вы ищете, - это система, которая управляет контейнерами с ssh-сервером с открытым портом 22.Хотя существует множество способов достижения этой цели, одним из способов может быть этот образ сервера Docker sshd .

docker run -itd --rm rastasheep/ubuntu-sshd bash
  • Докеру нужен процесс, чтобы поддерживать работу,Используя -it , вы создаете интерактивный сеанс с интерпретатором bash.Это сохранит работоспособность контейнера, а также позволит запустить терминал bash внутри изолированного виртуального сервера Ubuntu.
  • - rm : удалит контейнер, как только вы окажетесь в нем.
  • rastasheep / ubuntu-sshd : это идентификатор образа докера.

Как видите, не хватает системы, которая соединяет ваше приложение с этимДокерская платформа.Одним из подходов было бы использование библиотеки , которая есть в Python, которая использует докерский клиент программно.В качестве совета я бы порекомендовал вам установить docker на ваш компьютер и попытаться создать пару серверов Ubuntu с ssh-сервером и подключиться к нему с вашего хоста.Это поможет вам понять, действительно ли необходимо иметь sshd-сервер, сетевые реквизиты, которые вам понадобятся, если это так, для передачи всех клиентов в контейнеры.Прочтите официальную документацию по сети Docker .

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...