पुराने डॉकर होस्ट के साथ नया डॉकर क्लाइंट

हमारे पास आरएचईएल 6.6 पर चलने वाला थोड़ा पुराना डॉकर सर्वर है । यह अभी हमारी संचालन टीम द्वारा अच्छी तरह से समर्थित नहीं है, इसलिए हम आसानी से अपग्रेड नहीं कर सकते । अभी यह एपेल रेपो से डॉकर 1.3.2 चलाता है । अगर मैं इसमें एसएसएच सब कुछ करता हूं जो मुझे प्रूफ-ऑफ-कॉन्सेप्ट के लिए चाहिए जो उम्मीद है कि मुझे सड़क के नीचे डॉकर के लिए बुनियादी ढांचे के समर्थन को बेहतर बनाने के लिए प्रबंधन को आगे बढ़ाने में मदद करेगा ।

मैंने इसे टीसीपी/टीएलएस पर सुनने के लिए सेट किया है, और मैं इससे कनेक्ट करने में सक्षम हूं, लेकिन यह मेरे स्थानीय डॉकर क्लाइंट द्वारा दिए गए कमांड को चलाने से इनकार करता है ।

$ docker versionClient version: 1.4.1Client API version: 1.16Go version (client): go1.4Git commit (client): 5bc2ff8OS/Arch (client): darwin/amd64FATA[0000] Error response from daemon: client and server don't have same version (client : 1.16, server: 1.15)

मुझे पता है कि कनेक्शन स्वयं काम करता है क्योंकि fig काम करता है:

$ cat > fig.ymltest:    image: busybox$ fig run --rm test sh/ # hostname -f084f75fb59d4

क्या कोई तरीका है जिससे मैं नए डॉकर क्लाइंट को पुराने डॉकर एपीआई संस्करण का उपयोग करने के लिए कह सकता हूं जब तक कि मैं एक नए डॉकर होस्ट तक पहुंच नहीं सकता?

डॉकर 1.10.0 के बाद से, डॉकर इंजन के साथ डॉकर क्लाइंट संचार के लिए उपयोग किए जाने वाले एपीआई संस्करण को ओवरराइड करने का एक विकल्प है ।

बस डॉकर_एपी_वर्सन पर्यावरण चर का उपयोग करके ।

से.:

$ docker versionClient: Version:      1.10.0 API version:  1.22 Go version:   go1.5.3 Git commit:   590d510 Built:        Fri Feb  5 08:21:41 UTC 2016 OS/Arch:      darwin/amd64Error response from daemon: client is newer than server (client API version: 1.22, server API version: 1.21)$ DOCKER_API_VERSION=1.21 docker versionClient: Version:      1.10.0 API version:  1.21 Go version:   go1.5.3 Git commit:   590d510 Built:        Fri Feb  5 08:21:41 UTC 2016 OS/Arch:      darwin/amd64Server: Version:      1.9.1 API version:  1.21 Go version:   go1.4.3 Git commit:   a34a1d5 Built:        Fri Nov 20 17:56:04 UTC 2015 OS/Arch:      linux/amd64

संदर्भ: https://docs.docker.com/engine/reference/commandline/cli/#environment-variables

संपादित करें

डॉकर 1.13 के बाद से, सीएलआई में बेहतर बैकवर्ड संगतता है । के अनुसार https://blog.docker.com/2017/01/whats-new-in-docker-1-13 :

1.13 से शुरू होकर, नए सीएलआई पुराने डेमॉन से बात कर सकते हैं । हम फीचर बातचीत भी जोड़ रहे हैं ताकि यदि कोई नया क्लाइंट पुराने डेमॉन में समर्थित नहीं सुविधाओं का उपयोग करने का प्रयास कर रहा है तो उचित त्रुटियां वापस आ जाएं । यह इंटरऑपरेबिलिटी में बहुत सुधार करता है और एक ही मशीन से विभिन्न संस्करणों के साथ डॉकर इंस्टॉल को प्रबंधित करना बहुत आसान बनाता है ।

यदि आप सर्वर को आसानी से अपग्रेड नहीं कर सकते हैं, तो आपको अपने क्लाइंट को आसानी से डाउनग्रेड करने में सक्षम होना चाहिए । डॉकर ओपन सोर्स है GitHub. संस्करण 1.3.3 1.15 क्लाइंट एपीआई के साथ अंतिम था । यहाँ टैग का सीधा लिंक है ।

बस रेपो का एक स्थानीय क्लोन बनाएं, बिल्ड करें, बाइनरी बनाएं और फिर उत्पादित बाइनरी को स्वैप करें:

sudo service docker stop ; sudo cp $(which docker) $(which docker)_ ; sudo cp ./bundles/1.3.3-dev/binary/docker-1.3.3-dev $(which docker);sudo service docker start

आरएचईएल पर डॉकर क्लाइंट का प्रयोग करें?

@MichaelHampton डेवलपर्स को जोड़ने के लिए इस डोकर बॉक्स पर कर रहे हैं विभिन्न Windows और ओएस एक्स workstations. वे बूट 2 डॉकर स्थापित करते हैं और इस होस्ट पर इंगित उसी डॉकर क्लाइंट का उपयोग करना चाहते हैं ।

आदर्श विकल्प, फिर, एक लिनक्स वितरण का उपयोग करना है जो नवीनतम डॉकर संस्करण को ट्रैक करता है । फिलहाल, वह फेडोरा सर्वर है ।

मैं अनुमान लगा रहा हूं कि आप ऑपरेशन के लोगों को आरएचईएल 7 में अपग्रेड करना चाहेंगे, जो वर्तमान में 1.2 प्रतीत होता है, और बढ़ेगा (जैसा कि यह एक्स्ट्रा चैनल में है, इसलिए कोर की तुलना में तेजी से बढ़ सकता है) । यदि आपके ऑप्स टीम का समर्थन नहीं कर सकते हैं एक RHEL 7 (के साथ Red Hat के भुगतान का समर्थन) है, तो वे निश्चित रूप से समर्थन नहीं कर सकते हैं कुछ और अधिक खून बह रहा किनारे के रूप में इस तरह फेडोरा. आपके डेवलपर्स को बस यह स्वीकार करने की आवश्यकता है कि उन्हें एक मानक ऑपरेटिंग वातावरण में कोड करने की आवश्यकता है । यह भी देखें https://access.redhat.com/solutions/1408853 “आरएचईएल 7.1 में डॉकर कैसे समर्थित है?”