هذه من شأنها تعيين متغيرات البيئة ثم تنفيذ الأمر. على سبيل المثال
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"
هل يمكنك توضيح كيف سيكون ذلك مختلفًا؟
لا أريد تشغيله على مضيف عامل الإرساء ، أريد تشغيله محليًا ، ولكن مع إعداد عامل الإرساء للتحدث إلى الجهاز البعيد. في الأساس نسخة أبسط من
bash -c "eval $(docker-machine env mymachine);
docker images
"
لست مغرمًا بتغيير بيئتي في غلافي الخارجي ، ما زلت أنسى أنني فعلت ذلك ، ثم فجأة يتصرف عامل الميناء بشكل مختلف وأنا في حيرة من أمري.
إنها مطولة قليلاً ، ولكن إذا كنت أرغب في تشغيل أوامر عامل الإرساء لمرة واحدة على الأجهزة ، فأنا عادةً ما أستخدم 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. على سبيل المثال ، يصعب استخدامها مع عامل إنشاء السفن أو التين أو أي نوع من البرامج النصية المجمعة. لدي ملف يقوم ببناء Dockerfile من عدة ملفات في الدير الحالي ويغذيه عبر docker build -
.
يمكنني عمل شيء مثل DOCKER="docker $(docker-machine config mymachine)" ./build.sh
ثم الحصول على : ${DOCKER:=docker}
في البرنامج النصي. لذلك فهو عملي. لست متأكدا من عامل عامل البناء بالرغم من ذلك.
هيه ، نعم ، إذا كنت تريد استخدام docker-compose
فمن الأفضل لك تحديد متغيرات البيئة المناسبة.
التعليق الأكثر فائدة
يبدو أن هذا هو بالفعل ما يفعله
ssh
؟هل يمكنك توضيح كيف سيكون ذلك مختلفًا؟