Вам необходимо 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 взаимодействовать с ним вообще. Инструменты для установки полуизолированных инструментов на выбранном вами языке сценариев достаточно развиты, а для скомпилированных языков достаточно хорошо зарекомендовали себя; нет ничего плохого в установке программного обеспечения на хост-систему.