Machine: Предложение: добавить `docker-machine exec`

Созданный на 29 апр. 2015  ·  5Комментарии  ·  Источник: docker/machine

Они установят переменные среды, а затем выполнят команду. Например

docker-machine exec mymachine docker images
docker-machine exec mymachine ./my-docker-wrapper.sh

Самый полезный комментарий

Похоже, это уже то, что делает ssh ?

docker-machine ssh mymachine -- ifconfig -a
docker-machine ssh mymachine -- docker info
docker-machine ssh mymachine -- "echo uname -a > test && chmod +x test && ./test"

Не могли бы вы рассказать, как бы все было по-другому?

Все 5 Комментарий

Похоже, это уже то, что делает ssh ?

docker-machine ssh mymachine -- ifconfig -a
docker-machine ssh mymachine -- docker info
docker-machine ssh mymachine -- "echo uname -a > test && chmod +x test && ./test"

Не могли бы вы рассказать, как бы все было по-другому?

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

bash -c "eval $(docker-machine env mymachine);
docker images
"

Мне не очень нравится менять среду в моей внешней оболочке, я все время забываю, что сделал это, а затем внезапно докер ведет себя по-другому, и я сбит с толку.

Это немного многословно, но если я хочу запускать одноразовые команды докеров на машинах, я обычно использую docker-machine config , который будет выдавать правильные флаги docker для подключения к данной машине:

$ docker $(docker-machine config name) info

Вы также можете написать небольшой псевдоним оболочки, например, если набирать слишком много:

dkrm () {
    docker $(docker-machine config $1) "${@:2}"
}

Он будет указывать клиенту Docker на машину, указанную первым аргументом, и передавать остальное клиенту Docker.

Использование как:

$ dkrm devbox ps
... some containers on the machine "devbox"
$ dkrm staging ps
...some containers on the machine "staging"

Это поможет?

Я не знал об этой команде, так что спасибо за это. Это действительно помогает, но не так прозрачно, как команда exec. Например, сложно использовать с docker-compose, fig или любым другим скриптом-оболочкой. У меня есть тот, который собирает Dockerfile из нескольких файлов в текущем каталоге и загружает его через docker build - .

Я мог бы сделать что-то вроде DOCKER="docker $(docker-machine config mymachine)" ./build.sh а затем добавить : ${DOCKER:=docker} в скрипт. Так что это работоспособно. Не уверен, что насчет docker-compose.

Хех, да, если вы хотите использовать docker-compose вам лучше установить правильные переменные среды.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги