أريد أن سه أو باش في حاوية عامل الميناء قيد التشغيل. من فضلك ، انظر المثال:
$ sudo docker run -d webserverwebserver is clean image from ubuntu:14.04$ sudo docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES665b4a1e17b6 webserver:latest /bin/bash ... ... 22/tcp, 80/tcp loving_heisenberg
الآن أريد الحصول على شيء من هذا القبيل (انتقل إلى الحاوية قيد التشغيل):
$ sudo docker run -t -i webserver (أو ربما 665b4a1e17b6 بدلا من ذلك) $ root@665b4a1e17b6:/#
ومع ذلك ، عند تشغيل السطر أعلاه ، أحصل على معرف حاوية جديد:
$ root@42f1e37bd0e5:/#
اعتدت المتشرد وأود أن الحصول على سلوك مماثل vagrant ssh.
لعامل الميناء الإصدار 1.3 أو في وقت لاحق: بفضل المستخدم وير 3د الذي اقترح طريقة أخرى للحصول على قذيفة الحاوية. إذا استخدمنا attach يمكننا استخدام مثيل واحد فقط من قذيفة. حتى إذا كنا نريد فتح محطة جديدة مع مثيل جديد من قذيفة الحاوية ، ونحن بحاجة فقط لتشغيل ما يلي:
$ sudo docker exec -i -t 665b4a1e17b6 /bin/bash #by ID
في الأساس ، إذا تم بدء حاوية عامل الميناء باستخدام /bin/bash الأمر يمكنك الوصول إليه باستخدام attach. إذا لم يكن كذلك ، فأنت بحاجة إلى تنفيذ الأمر لإنشاء مثيل باش داخل الحاوية باستخدام exec.
أيضا للخروج باش دون أن تترك باش قيد التشغيل في عملية المارقة:
على الرغم من أن مؤلف السؤال قال على وجه التحديد أنهم مهتمون بحاوية قيد التشغيل، إلا أنه من الجدير بالذكر أيضا أنه إذا كانت الحاوية لا تعمل ، ولكنك ترغب في تشغيلها لكزة حولك يمكنك تشغيلها:
بناء على إجابة @ تيمور ، قمت بإنشاء ما يلي سيناريو مفيد
الإعداد
وضع docker-ssh الملف في الخاص بك $PATH مع المحتويات التالية
#!/bin/bash -xe# docker container id or name might be given as a parameterCONTAINER=$1if [[ "$CONTAINER" == "" ]]; then # if no id given simply just connect to the first running container CONTAINER=$(docker ps | grep -Eo "^[0-9a-z]{8,}\b")fi# start an interactive bash inside the container# note some containers don't have bash, then try: ash (alpine), or simply sh# the -l at the end stands for login shell that reads profile files (read man)docker exec -i -t $CONTAINER bash -l
ملاحظة: بعض الحاويات لا تحتوي على bash، ولكن ash, sh الخ. في هذه الحالات bash يتم استبداله في البرنامج النصي أعلاه.
الاستخدام
إذا كان لديك مثيل تشغيل واحد فقط ، ببساطة تشغيل
$> docker-ssh
خلاف ذلك ، تزويده معلمة معرف عامل الميناء التي تحصل عليها من docker ps (العقيد الأول)
لقد قمت بإنشاء خادم سش الحاويات التي توفر قدرات سش إلى أي حاوية قيد التشغيل. لا تحتاج إلى تغيير الحاوية الخاصة بك. والشرط الوحيد هو أن الحاوية لديها باش.
إذا كان لديك حاوية مع اسم 'خادم الويب 1'. سيبدأ الأمر تشغيل عامل الميناء التالي حاوية ثانية من شأنها أن توفر سه للحاوية الأولى.
في بعض الأحيان سيكون من المفيد أن تكون قادرة على سه في حاوية عامل الميناء ، وخصوصا خلال التنمية. صورة عامل الميناء التالية تسمح ل سه في حاوية باستخدام مفتاح خاص: