Isso definiria as variáveis de ambiente e, em seguida, executaria o comando. Por exemplo
docker-machine exec mymachine docker images
docker-machine exec mymachine ./my-docker-wrapper.sh
Parece que já é isso que ssh
faz?
docker-machine ssh mymachine -- ifconfig -a
docker-machine ssh mymachine -- docker info
docker-machine ssh mymachine -- "echo uname -a > test && chmod +x test && ./test"
Você pode explicar como isso seria diferente?
Não quero que ele seja executado no host docker, quero que ele seja executado localmente, mas com a configuração do docker para falar com o host remoto. Basicamente, uma versão mais simples de
bash -c "eval $(docker-machine env mymachine);
docker images
"
Não gosto tanto de mudar meu ambiente na minha concha mais externa, sempre me esqueço de que fiz isso e, de repente, o docker se comporta de maneira diferente e fico confuso.
É um pouco prolixo, mas se eu quiser executar comandos docker únicos em máquinas, geralmente uso docker-machine config
, que exibirá os sinalizadores docker
corretos para conexão a uma determinada máquina:
$ docker $(docker-machine config name) info
Você também pode escrever um pequeno alias de shell, como se for muito para digitar:
dkrm () {
docker $(docker-machine config $1) "${@:2}"
}
Ele apontará o cliente Docker para a máquina especificada pelo primeiro argumento e passará o resto para o cliente Docker.
Uso como:
$ dkrm devbox ps
... some containers on the machine "devbox"
$ dkrm staging ps
...some containers on the machine "staging"
Isso ajuda?
Eu não estava ciente desse comando, então obrigado por isso. Ajuda, mas não é tão transparente quanto um comando exec. Por exemplo, difícil de usar com docker-compose, fig ou qualquer tipo de script de invólucro. Eu tenho um que cria o Dockerfile a partir de vários arquivos no diretório atual e o alimenta por meio de docker build -
.
Eu poderia fazer algo como DOCKER="docker $(docker-machine config mymachine)" ./build.sh
e então ter : ${DOCKER:=docker}
no script. Portanto, é viável. Não tenho certeza sobre docker-compose embora.
Heh, sim, se você quiser usar docker-compose
é melhor definir as variáveis de ambiente adequadas.
Comentários muito úteis
Parece que já é isso que
ssh
faz?Você pode explicar como isso seria diferente?