क्या डॉकर पर उबंटू सर्वर चलाना संभव है?

मेरी टीम वर्चुअलबॉक्स पर चल रहे उबंटू 16.04 सर्वर पर हमारी परियोजना विकसित कर रही है । जैसे ही नए डेवलपर्स हमारी परियोजना में शामिल होते हैं, यह हमारे लिए एक बड़ी परेशानी है कि वे वर्चुअलबॉक्स पर एक नया उबंटू सर्वर बनाने में मदद करें और हर बार परियोजना शुरू करने के लिए सभी निर्भरताएं स्थापित करें ।

हमने डॉकर के साथ परेशानी को हल करने का फैसला किया । इसलिए, मैं नीचे के साथ डॉकर पर उबंटू पर हमारी परियोजना चलाने की कोशिश कर रहा हूं Dockerfile और docker-compose.yml, लेकिन मुझे कई संसाधन नहीं मिल रहे हैं जैसे how to run Ubuntu on Docker. क्या मैं नीचे दिए गए तरीके से डॉकर पर उबंटू चलाने के लिए एक सही दिशा में जा रहा हूं?

एक बात मैं उलझन में हूं कि जब मैं दौड़ता हूं तो मुझे आईपी पता क्यों नहीं मिल सकता है ifconfig डॉकर पर चल रहे मेरे उबंटू सर्वर पर?

Dockerfile

FROM ubuntu:16.04RUN sudo apt-get updateRUN sudo apt-get install -y build-essential autoconf libtool RUN sudo apt-get install -y python-setuptools python-dev python3-devRUN sudo apt-get install -y python-pip python3-pipRUN sudo apt-get install -y python-virtualenv unixodbc-dev libffi-dev git...

डॉकर-लिखें।yml

version: '3'services:  ubuntu:    build:      context: .      dockerfile: ./Dockerfile    ports:     - "8000:8000"    container_name: dev_ubuntu...

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

डॉकर वास्तव में ओएस चलाने के लिए नहीं है । यह एक निहित (पृथक) वातावरण में एकल प्रक्रिया को चलाने के लिए है । कंटेनर उसी कर्नेल का उपयोग करता है जो होस्ट पर है ।

जब आप एक डॉकर छवि बनाते हैं FROM ubuntu आप अपनी छवि को कुछ पूर्व-निर्मित परतों के साथ शुरू कर रहे हैं जो एक मानक फ़ाइल सिस्टम के कुछ हिस्सों में लाता है और पैकेज जो आपको उबंटू सर्वर पर मिलेंगे ।

फिर आप अपनी खुद की अतिरिक्त परतें जोड़ते हैं, बायनेरिज़ और फ़ाइलों को जोड़ते हैं जो आपके प्रोग्राम / प्रक्रिया को चलाने के लिए आवश्यक हैं ।

छवि (सामान्य रूप से लेकिन अनिवार्य नहीं) में एक होगा CMD आदेश या ENTRYPOINT कुछ चलाने की आज्ञा।

एक में प्रत्येक पंक्ति Dockerfile छवि बनाने के तरीके पर डॉकर को निर्देश देने वाला एक आदेश है । प्रत्येक पंक्ति / कमांड का परिणाम एक और परत में होता है । पैकेज स्थापित करने के लिए, आप शायद ऐसा कुछ करना चाहते हैं:

FROM ubuntu:16.04RUN apt-get -qq update && \    apt-get -y install build-essential autoconf libtool && \    apt-get install -y python-setuptools python-dev python3-dev && \    apt-get install -y python-pip python3-pip && \    apt-get install -y python-virtualenv unixodbc-dev libffi-dev git && \    apt-get clean && \    rm -rf /var/lib/apt/lists/*

इससे आपकी छवि छोटी रहेगी।

फिर आपको वास्तव में कुछ चलाने की आवश्यकता होगी । ..

CMD python

तब आप अपनी छवि बना सकते हैं:

docker build -t myimage .

और इसका इस्तेमाल करें । ..

docker run --rm -it myimage

ifconfig काम नहीं करता क्योंकि बाइनरी छवि में नहीं है । यह वास्तव में आवश्यक नहीं है क्योंकि आप कंटेनर के भीतर से नेटवर्क का प्रबंधन नहीं करते हैं ।

तो आप कुछ कोड बनाने के लिए एक कंटेनर बना रहे हैं । जब आप इसे चलाते हैं तो आप कंटेनर के अंदर कोड के साथ अपनी निर्देशिका को माउंट करना चाहते हैं । मुझे नहीं पता कि आप अपने वर्कस्टेशन या सर्वर पर कौन सा ओएस चलाते हैं, इसलिए मैं अधिक जानकारी के लिए इस पोस्ट का उल्लेख करूंगा: https://stackoverflow.com/questions/41485217/mount-current-directory-as-a-volume-in-docker-on-windows-10/41489151#41489151

मान लीजिए कि आप कमांड के साथ निर्माण कर रहे हैं make, आप यह कर सकते हैं:

docker run --rm -it -v $(pwd):/usr/src/project myimage make

इसके लिए आपके में एक लाइन की आवश्यकता होगी Dockerfile काम कर रहे डीआईआर बनाने के लिए /usr/src/project:

WORKDIR /usr/src/project

यदि आप भाग गए तो क्या होगा docker ऊपर कमांड लाइन यह है कि यह नामित छवि से एक कंटेनर बनाएगा myimage (बिल्ड कमांड पहले दिखाया गया है), वर्तमान निर्देशिका को माउंट करें जिसमें आप हैं /usr/src/project नए कंटेनर के अंदर। भागो make कंटेनर के अंदर कमांड करें और फिर बाहर निकलें । द --rm पैरामीटर डॉकर को बताता है कि एक बार चलने के बाद कंटेनर को चारों ओर न रखें । द -it पैरामीटर का मतलब है interactive और tty.

यदि आप बस कुछ शेल तक पहुंच चाहते हैं ताकि आप मैन्युअल रूप से चला सकें make या तदर्थ फैशन में अन्य आदेश, आप यह भी कर सकते हैं:

docker run --rm -it -v $(pwd):/usr/src/project myimage /bin/bash

यह कंटेनर से बनाएगा myimage छवि, और भागो bash. क्योंकि bash बाहर नहीं निकलता है और आपके पास है -it पैरामीटर, आप कंटेनर के प्रॉम्प्ट पर होंगे जहां आप जो चाहें कर सकते हैं ।

बस याद रखें कि कंटेनर के अंदर से आपके द्वारा संशोधित की गई कोई भी फ़ाइल संरक्षित नहीं होगी और अगली बार जब आप डिफ़ॉल्ट स्थिति में वापस शुरू करेंगे । बेशक से किसी भी फाइल /usr/src/project निर्देशिका को आपके स्थानीय हार्ड ड्राइव पर संशोधित किया जाएगा क्योंकि यह इससे घुड़सवार है ।

लिनक्स पर, इफकॉन्फिग (नेट-टूल्स) का उपयोग न करें, आईपी (आईप्राउट 2) का उपयोग करें जिसमें अधिक विशेषताएं हैं । आईपीआरओटी 2 20 वर्षों से अस्तित्व में है, और नेट-टूल्स अप्रचलित है और इसे 15 वर्षों तक मुश्किल से बनाए रखा गया है । linux - Should I quit using Ifconfig? - Server Fault