Как подключиться к док-контейнеру, на котором запущен Apache Drill? - PullRequest
0 голосов
/ 02 ноября 2018

На Машина A , я бегу

 $ docker run -i --name drill-1.14.0 -p 8047:8047 
   --detach -t drill/apache-drill:1.14.0 /bin/bash
   <displays container ID>

 $ docker exec -it drill-1.14.0 bash
   <connects to container>

 $ /opt/drill/bin/drill-localhost  

У меня вопрос, как мне, с Машина B запустить

docker exec -it drill-1.14.0 bash

на Машина A - Я просмотрел справочные страницы, но ничего не нажимало.

Обе машины являются машинами Windows (10 x64).

1 Ответ

0 голосов
/ 02 ноября 2018

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

Помните, что возможность запуска любой команды Docker вообще подразумевает доступ на уровне root по системе (вы можете docker run -u root -v /:/host ... и просматривать или изменять любые файлы хост-системы, которые вы хотите). Обычно из-за этого есть некоторый контроль над тем, кто именно может запускать команды Docker. возможно открыть сетевой сокет Docker, но чрезвычайно опасно: теперь любой, кто может подключиться к этому сокету по сети, может, скажем, изменить пароль хоста и файлы sudoers, чтобы без пароля root-эквивалент ssh логин. (Новости Google опубликовали мне неделю или две назад статью о том, что злоумышленники ищут открытые сетевые сокеты Docker и используют их, например, для превращения компьютеров в майнеры криптовалюты.)

Если вы создаете сервис и ожидаете, что пользователи будут взаимодействовать с ним удаленно, то вам, вероятно, нужно сделать все интерфейсы доступными в виде сетевых запросов, а не с помощью локальных команд оболочки. Например, для служб на основе HTTP обычно используется /admin набор URL-путей, для которых требуется отдельная аутентификация по паролю или иные привилегии.

Если вы пытаетесь администрировать службу через локальные файлы конфигурации, часто лучшим способом является сохранение файлов конфигурации в хост-системе, используйте docker run -v, чтобы вставить их в контейнер, и когда вам нужно изменить их, docker stop; docker rm; docker run контейнер, чтобы получить его новую копию с новым файлом конфигурации.

Если вы упаковываете какое-то приложение, но основной способ взаимодействия с ним - через инструменты CLI и локальные файлы, подумайте, действительно ли вы хотите использовать инструмент, который изолирует файловую систему приложения от хоста и требует доступа на уровне root взаимодействовать с ним вообще. Инструменты для установки полуизолированных инструментов на выбранном вами языке сценариев достаточно развиты, а для скомпилированных языков достаточно хорошо зарекомендовали себя; нет ничего плохого в установке программного обеспечения на хост-систему.

...