अद्यतन
सबसे आसान तरीका: docker निष्पादन का उपयोग करना
डॉकर संस्करण 1.3 या नया कमांड exec
उस कमांड का समर्थन करता है जो इसके समान व्यवहार करता है nsenter
। यह कमांड पहले से चल रहे कंटेनर में नई प्रक्रिया चला सकता है (कंटेनर में PID 1 प्रक्रिया पहले से ही चल रही होगी)। आप /bin/bash
कंटेनर स्थिति का पता लगाने के लिए दौड़ सकते हैं :
docker exec -t -i mycontainer /bin/bash
देख डोकर कमांड लाइन प्रलेखन
वैकल्पिक विधि 1
स्नैपशॉट
आप इस तरह से कंटेनर फाइल सिस्टम का मूल्यांकन कर सकते हैं:
# find ID of your running container:
docker ps
# create image (snapshot) from container filesystem
docker commit 12345678904b5 mysnapshot
# explore this filesystem using bash (for example)
docker run -t -i mysnapshot /bin/bash
इस तरह, आप सटीक समय में चल रहे कंटेनर की फाइलसिस्टम का मूल्यांकन कर सकते हैं। कंटेनर अभी भी चल रहा है, भविष्य में कोई बदलाव शामिल नहीं हैं।
आप बाद में स्नैपशॉट का उपयोग करके हटा सकते हैं (चल रहे कंटेनर का फाइल सिस्टम प्रभावित नहीं होता है!):
docker rmi mysnapshot
वैकल्पिक विधि 2
ssh
यदि आपको निरंतर पहुंच की आवश्यकता है, तो आप अपने कंटेनर में sshd स्थापित कर सकते हैं और sshd डेमन चला सकते हैं:
docker run -d -p 22 mysnapshot /usr/sbin/sshd -D
# you need to find out which port to connect:
docker ps
इस तरह, आप अपने ऐप को ssh (कनेक्ट और निष्पादित करें जो आप चाहते हैं) का उपयोग करके चला सकते हैं।
अद्यतन: वैकल्पिक विधि 3
nsenter
उपयोग करें nsenter
, https://web.archive.org/web/20160305150559/http://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/ देखें।
संक्षिप्त संस्करण है: nsenter के साथ, आप एक मौजूदा कंटेनर में एक शेल प्राप्त कर सकते हैं, भले ही वह कंटेनर SSH या किसी भी प्रकार के विशेष प्रयोजन के डेमॉन न चला हो
docker exec <container> bash
:। तो, आप कंटेनर के अंदर एक खोल खोलें।