Machine: Proposition : ajouter `docker-machine exec`

Créé le 29 avr. 2015  ·  5Commentaires  ·  Source: docker/machine

Ceux-ci définiraient les variables d'environnement, puis exécuteraient la commande. Par exemple

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

Commentaire le plus utile

On dirait que c'est déjà ce que fait 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"

Pouvez-vous expliquer en quoi cela serait différent?

Tous les 5 commentaires

On dirait que c'est déjà ce que fait 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"

Pouvez-vous expliquer en quoi cela serait différent?

Je ne veux pas qu'il s'exécute sur l'hôte docker, je veux qu'il s'exécute localement, mais avec la configuration de docker pour parler à l'hôte distant. Fondamentalement une version plus simple de

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

Je n'aime pas tellement changer mon environnement dans ma coquille la plus externe, j'oublie toujours que je l'ai fait, et soudainement, docker se comporte différemment et je suis confus.

C'est un peu verbeux, mais si je veux exécuter des commandes docker ponctuelles sur des machines, j'utilise généralement docker-machine config , qui crachera les bons indicateurs docker pour la connexion à une machine donnée :

$ docker $(docker-machine config name) info

Vous pouvez également écrire un petit alias shell comme si c'est trop long à taper :

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

Il pointera le client Docker vers la machine spécifiée par le premier argument et transmettra le reste au client Docker.

Utilisation comme :

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

Est ce que ça aide?

Je n'étais pas au courant de cette commande, alors merci pour cela. Cela aide, mais ce n'est pas aussi transparent qu'une commande exec. Par exemple, difficile à utiliser avec docker-compose, fig ou tout type de script wrapper. J'en ai un qui construit le Dockerfile à partir de plusieurs fichiers du répertoire actuel et le nourrit via docker build - .

Je pourrais faire quelque chose comme DOCKER="docker $(docker-machine config mymachine)" ./build.sh puis avoir : ${DOCKER:=docker} dans le script. Donc c'est faisable. Pas sûr de docker-compose cependant.

Hé, oui, si vous voulez utiliser docker-compose vous feriez mieux de définir les variables d'environnement appropriées.

Cette page vous a été utile?
0 / 5 - 0 notes