これらは環境変数を設定してからコマンドを実行します。 例えば
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"
それがどのように違うのか詳しく説明していただけますか?
Dockerホストで実行したくないので、ローカルで実行したいのですが、Dockerをセットアップしてリモートホストと通信します。 基本的に、より単純なバージョン
bash -c "eval $(docker-machine env mymachine);
docker images
"
最外殻の環境を変更するのはあまり好きではありません。変更したことを忘れ続けていると、突然dockerの動作が異なり、混乱します。
少し冗長ですが、マシンで1回限りのDockerコマンドを実行する場合は、通常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
が行っていることのように聞こえますか?それがどのように違うのか詳しく説明していただけますか?