Machine: Vorschlag: `docker-machine exec` hinzufügen

Erstellt am 29. Apr. 2015  ·  5Kommentare  ·  Quelle: docker/machine

Diese würden die Umgebungsvariablen setzen und dann den Befehl ausführen. Z.B

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

Hilfreichster Kommentar

Klingt so, als ob ssh macht?

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

Können Sie näher erläutern, inwiefern das anders wäre?

Alle 5 Kommentare

Klingt so, als ob ssh macht?

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

Können Sie näher erläutern, inwiefern das anders wäre?

Ich möchte nicht, dass es auf dem Docker-Host läuft, sondern lokal, aber mit Docker-Setup, um mit dem Remote-Host zu kommunizieren. Im Grunde eine einfachere Version von

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

Ich verändere meine Umgebung in meiner äußersten Hülle nicht so gerne, ich vergesse immer wieder, dass ich es getan habe, und dann verhält sich Docker plötzlich anders und ich bin verwirrt.

Es ist ein wenig ausführlich, aber wenn ich einmalige Docker-Befehle auf Maschinen ausführen möchte, verwende ich normalerweise docker-machine config , die die richtigen docker Flags für die Verbindung zu einer bestimmten Maschine ausspucken:

$ docker $(docker-machine config name) info

Sie könnten auch einen kleinen Shell-Alias ​​schreiben, wenn es zu viel ist, um es einzugeben:

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

Es zeigt den Docker-Client auf die Maschine, die durch das erste Argument angegeben ist, und übergibt den Rest an den Docker-Client.

Verwendung wie:

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

Hilft das?

Der Befehl war mir nicht bekannt, also danke dafür. Es hilft, aber es ist nicht so transparent wie ein exec-Befehl. ZB schwierig zu verwenden mit docker-compose, fig oder jeder Art von Wrapper-Skript. Ich habe eine, die das Dockerfile aus mehreren Dateien im aktuellen Verzeichnis erstellt und über docker build - füttert.

Ich könnte etwas wie DOCKER="docker $(docker-machine config mymachine)" ./build.sh und dann : ${DOCKER:=docker} im Skript haben. Es ist also machbar. Bei Docker-Compose bin ich mir jedoch nicht sicher.

Heh, ja, wenn Sie docker-compose möchten, setzen Sie am besten die richtigen Umgebungsvariablen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen