आप एक Python लाइब्रेरी API का उपयोग करके Docker ऑब्जेक्ट जैसे कंटेनर, इमेज, क्लस्टर, स्वार्म आदि को एक्सेस, प्रबंधित और मैनिपुलेट कर सकते हैं। आप बहुत कुछ कर सकते हैं जो Docker कमांड आपको करने देती हैं। यह तब बहुत काम आता है जब आप Django या Flask जैसे Python ऐप का उपयोग कर रहे हों और आप उसी Python स्क्रिप्ट का उपयोग करके अपने Docker कंटेनर को बनाए रखना चाहते हैं जिसका उपयोग आप एप्लिकेशन के लिए करते हैं।
Docker के लिए Python लाइब्रेरी API का उपयोग करने के लिए, आपको docker-py नामक एक पैकेज इंस्टॉल करना होगा। आप निम्नलिखित pip कमांड का उपयोग करके ऐसा कर सकते हैं। यदि आपके पास Python 2 इंस्टॉल है, तो pip3 को pip से बदलें।
pip3 install docker-py
अब, हम Docker के लिए Python क्लाइंट लाइब्रेरी API की विभिन्न विशेषताओं को एक-एक करके देखेंगे।
Python स्क्रिप्ट के अंदर API का उपयोग करके Docker कमांड चलाने के लिए, आपको पहले Docker डेमॉन से कनेक्ट करना होगा। आप निम्नलिखित कमांड का उपयोग करके ऐसा कर सकते हैं:
# Docker से क्लाइंट आयात करें
from docker import client
# डेमॉन से कनेक्ट करने के लिए एक क्लाइंट ऑब्जेक्ट बनाएं
myClient = client.Client(base_url='unix://var/run/docker.sock')
Docker डेमॉन से कनेक्ट होने के बाद, आप निम्नलिखित कमांड का उपयोग करके सभी कंटेनरों की सूची प्राप्त कर सकते हैं। कृपया ध्यान दें कि किसी भी कमांड को चलाने से पहले आप रूट उपयोगकर्ता के रूप में लॉग इन हैं ताकि अनुमति त्रुटियों से बचा जा सके।
myClient.containers()
यह आपके स्थानीय मशीन में मौजूद सभी कंटेनरों की सूची देगा साथ ही उनके ID, संबंधित इमेज और इमेज ID, लेबल, पोर्ट, स्टेटस आदि।
एक नया कंटेनर बनाने के लिए, आप क्लाइंट ऑब्जेक्ट से create_container मेथड का उपयोग कर सकते हैं।
myContainer = myClient.create_container(image='ubuntu:latest', command='/bin/bash')
उपरोक्त कमांड का उपयोग करके, आप Ubuntu इमेज से एक कंटेनर बना सकते हैं और Bash खोलने के लिए कमांड प्रदान कर सकते हैं या कोई अन्य कमांड जो आप चाहते हैं।
आप निम्नलिखित कमांड का उपयोग करके कंटेनर के ID को प्रिंट करके जांच सकते हैं कि कंटेनर बनाया गया है या नहीं:
print(myContainer['Id'])
किसी विशेष कंटेनर का निरीक्षण करने के लिए, आप क्लाइंट ऑब्जेक्ट पर inspect_container मेथड का उपयोग कर सकते हैं।
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')
आपको उस कंटेनर का कंटेनर ID प्रदान करना होगा जिसे आप आर्गुमेंट के रूप में अंदर निरीक्षण करना चाहते हैं। आप केवल विशिष्ट फ़ील्ड जैसे पथ या नाम या निर्माण की तारीख का भी निरीक्षण कर सकते हैं।
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Name']
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Created']
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Path']
एक कंटेनर को कमिट करने के लिए, आप कंटेनर ऑब्जेक्ट पर commit मेथड का उपयोग कर सकते हैं। आप कंटेनर को एक टैग भी प्रदान कर सकते हैं।
myClient.commit('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5', tag='container1')
उपरोक्त कमांड कंटेनर का ID लौटाएगी। एक कंटेनर को रीस्टार्ट करने के लिए, आपको यह सुनिश्चित करना होगा कि कंटेनर अभी भी मौजूद है। इससे बचने के लिए, हम कमांड को try-catch ब्लॉक के अंदर लपेट सकते हैं।
try:
myClient.restart('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')
except Exception as e:
print(e)
सभी इमेज की सूची प्राप्त करने के लिए, आप क्लाइंट ऑब्जेक्ट पर images मेथड का उपयोग कर सकते हैं।
images = myClient.images()
यह सभी इमेज की सूची लौटाएगा। पहली इमेज का विवरण प्रिंट करने के लिए, उपयोग करें:
print(images[0])
इमेज का निरीक्षण करने के लिए:
myClient.inspect_image('9140108b62dc87d9b278bb0d4fd6a3e44c2959646eb966b86531306faa81b09b')
आपको आर्गुमेंट के रूप में इमेज ID प्रदान करना होगा।
अब हम वॉल्यूम के साथ काम करने के लिए कुछ उपयोगी कमांड देखेंगे। सभी वॉल्यूम की सूची प्राप्त करने के लिए, आप क्लाइंट ऑब्जेक्ट पर volumes मेथड का उपयोग कर सकते हैं।
volumes = myClient.volumes()
यह सभी वॉल्यूम की सूची लौटाएगा। पहले वॉल्यूम का विवरण प्रिंट करने के लिए, आप उपयोग कर सकते हैं:
print(volumes['Volumes'][0])
एक वॉल्यूम बनाने के लिए, आपको वॉल्यूम नाम, ड्राइवर नाम निर्दिष्ट करना होगा और वैकल्पिक रूप से आप अन्य विकल्प भी निर्दिष्ट कर सकते हैं।
volume = myClient.create_volume(name='myVolume1', driver='local', driver_opts={})
यह जांचने के लिए कि वॉल्यूम बनाया गया है या नहीं, इसे प्रिंट करने का प्रयास करें।
print(volume)
एक वॉल्यूम का निरीक्षण करने के लिए, क्लाइंट ऑब्जेक्ट पर inspect_volume मेथड का उपयोग करें।
myClient.inspect_volume('myVolume1')
एक वॉल्यूम के साथ माउंट किए गए कंटेनर को बनाने के लिए, आप निम्नलिखित उदाहरण का उपयोग कर सकते हैं:
mounted_container = myClient.create_container(
'ubuntu',
'ls',
volumes=['/var/lib/docker/volumes/myVolume1'],
host_config=myClient.create_host_config(binds=[
'/var/lib/docker/volumes/myVolume1:/usr/src/app/myVolume1'
])
)
उपरोक्त कमांड Ubuntu इमेज से एक कंटेनर बनाती है और एंट्रीपॉइंट के रूप में ls निर्दिष्ट करती है और आपके स्थानीय मशीन पर स्थित /var/lib/docker/volumes/myVolume1 वॉल्यूम को आपके Docker कंटेनर में /usr/src/app/myVolume1 पर माउंट करती है।
निष्कर्ष में, इस लेख में हमने चर्चा की है कि Python स्क्रिप्ट का उपयोग करके Docker ऑब्जेक्ट जैसे Docker कंटेनर, इमेज, वॉल्यूम को कैसे बनाएं, निरीक्षण करें और प्रबंधित करें। यह तब बहुत उपयोगी होता है जब आप Django या Flask का उपयोग करके वेब एप्लिकेशन या Tkinter का उपयोग करके GUI एप्लिकेशन या किसी अन्य Python स्क्रिप्ट का उपयोग करके Python टूल का उपयोग करके एप्लिकेशन बना रहे हों। यदि आप Docker कंटेनर से एप्लिकेशन को प्रबंधित करने के इच्छुक हैं, तो कमांड लाइन इंटरफेस के माध्यम से अलग से कमांड निष्पादित करने के बजाय Docker कमांड लिखने के लिए Python स्क्रिप्ट का उपयोग करने की दृढ़ता से सलाह दी जाती है।