Они установят переменные среды, а затем выполнят команду. Например
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"
Не могли бы вы рассказать, как бы все было по-другому?
Я не хочу, чтобы он запускался на хосте докера, я хочу, чтобы он запускался локально, но с настройкой докера, чтобы разговаривать с удаленным. В основном более простая версия
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
вам лучше установить правильные переменные среды.
Самый полезный комментарий
Похоже, это уже то, что делает
ssh
?Не могли бы вы рассказать, как бы все было по-другому?