2016-10-27 3 views
0

Я использую докер-компоновать с:Как запустить команду в связанном контейнере докеров?

  1. существующий (питон) приложение работает внутри Docker контейнера.
  2. другое (рубиновое) приложение командной строки, работающее в контейнере докера.

Как подключить эти два контейнера, чтобы контейнер python мог вызвать приложение командной строки в контейнере ruby? (и передать аргументы через stdin/stdout)

+0

Возможно, вы можете сделать том для совместного использования приложения командной строки Ruby и смонтировать этот том в контейнере Python. – Tryph

+0

Я могу поделиться томом, но как мне запустить команду внутри * другого * контейнера? – gingerlime

+0

@gingerlime - это два контейнера, запущенных в настоящее время, и вы хотите запустить команду в одном из контейнеров? – Rao

ответ

1

Опции доступны, но не велики. Если вы используете последнюю версию Docker Compose, оба контейнера будут находиться в одной сети Docker и могут связываться, поэтому вы можете установить sshd в контейнер назначения и сделать ssh звонки из исходного контейнера.

В качестве альтернативы, используйте Docker in Docker с контейнером источника, так что вы можете запустить docker execвнутри источника и выполнять команды на целевом контейнере.

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

+0

Я надеялся избежать SSH, так как считается плохой практикой AFAIK. Я посмотрю на Docker-in-Docker, но я использую предварительно построенный образ, поэтому не уверен, как «преобразовать» его в использование DiD ... Действительно, не очень. Со всеми разговорами о лучшей практике запуска только одной вещи в контейнере я бы подумал, что такой прецедент будет как-то прямолинейным ... – gingerlime