2016-02-16 6 views
7

Я создаю файл локально. Как запустить пакет контейнеров на удаленном хосте, например docker-compose up -d, с DOCKER_HOST=<some ip>?Как запустить docker-compose на удаленном хосте?

+0

вы имели в виду «удаленный хост»? – JAM

+0

Да, удаленный, sry – Arsen

+0

Ваш вопрос для меня непонятен. Вы действительно хотите развернуть контейнер на удаленном хосте через 'docker-compose'? – Auzias

ответ

4

Если вам не нужно запускать контейнер докеров на вашем локальном компьютере, но все же на том же удаленном компьютере вы можете изменить это в настройках докеры.

На локальной машине: Вы можете контролировать удаленный хост с -H параметром

docker -H tcp://remote:2375 pull ubuntu 

Чтобы использовать его с Докер-композе, вы должны добавить этот параметр в/и т.д./по умолчанию/докер

на удаленной машине

Вы должны изменить слушать от внешнего адреса и не только UNIX сокет.

Для получения более подробной информации см. Bind Docker to another host/port or a Unix socket.

Если вам необходимо запустить контейнер на нескольких удаленных Hoste, вы должны настроить Docker Swarm

3

От создания сообщения документации

Compose CLI environment variables

DOCKER_HOST

Устанавливает URL в докер демон. Как и в случае с клиентом Docker, по умолчанию используется unix: ///var/run/docker.sock.

так, что мы можем сделать

export DOCKER_HOST=tcp://192.168.1.2:2375 
docker-compose up 
2

Учитывая, что вы можете войти в систему на удаленном компьютере, другой подход к управлению docker-compose команды на этой машине является использование SSH.

Скопируйте файл docker-compose.yml к удаленному хосту через scp, запустите docker-compose команды над SSH, наконец, очистить, снова удалив файл. Это может выглядеть следующим образом:

scp ./docker-compose.yml [email protected]:/tmp/docker-compose.yml 
ssh [email protected] "docker-compose -f /tmp/docker-compose.yml up" 
ssh [email protected] "rm -f /tmp/docker-compose.yml" 

Вы можете даже сделать его короче и опустить отправку и удаление файла docker-compose.yml с помощью -f - опцию docker-compose которая будет ожидать файл docker-compose.yml быть по трубопроводу из stdin. Просто труба его содержание в SSH команды:

cat docker-compose.yml | ssh [email protected] "docker-compose -f - up" 

Если вы используете переменные окружения подстановки в файле docker-compose.yml, вышеупомянутая команда не заменят их с локальными значениями на удаленном хосте и ваши команды могут завершиться неудачей из-за к переменным, которые не заданы.Чтобы преодолеть это, envsubst utility может быть использован для замены переменных с вашими локальными значениями в памяти, прежде чем конвейеру содержимое в SSH команды:

envsubst < docker-compose.yml | ssh [email protected] "docker-compose up" 
Смежные вопросы