Machine: Proposta: Adicionar `docker-machine exec`

Criado em 29 abr. 2015  ·  5Comentários  ·  Fonte: docker/machine

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

Comentários muito úteis

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?

Todos 5 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações