அனைவருக்கும் வணக்கம்! அவரது
Начало
ஒரு மழை பெய்யும் செப்டம்பர் மாலையில், நான் டிஜிட்டல் பெருங்கடலில் $5க்கு வாடகைக்கு எடுத்த இயந்திரத்தை சுத்தம் செய்யும் போது இது தொடங்கியது, டோக்கர் 24 ஜிகாபைட் வட்டு இடத்தை அதன் படங்கள் மற்றும் கொள்கலன்களால் நிரப்பியதால் உறைந்துவிட்டது. நகைச்சுவை என்னவென்றால், இந்த படங்கள் மற்றும் கொள்கலன்கள் அனைத்தும் தற்காலிகமானவை மற்றும் ஒவ்வொரு முறையும் ஒரு நூலகம் அல்லது கட்டமைப்பின் புதிய பதிப்பு வெளியிடப்படும்போது எனது பயன்பாட்டின் செயல்திறனைச் சோதிக்க மட்டுமே தேவைப்பட்டது. நான் ஷெல் ஸ்கிரிப்ட்களை எழுத முயற்சித்தேன் மற்றும் குப்பைகளை சுத்தம் செய்ய ஒரு கிரான் அட்டவணையை அமைக்க முயற்சித்தேன், ஆனால் அது உதவவில்லை: ஒவ்வொரு முறையும் தவிர்க்க முடியாமல் எனது சர்வரின் டிஸ்க் ஸ்பேஸ் சாப்பிட்டு, சர்வர் தொங்கிக்கொண்டிருக்கும் போது (சிறந்தது). சில சமயங்களில், ஒரு கொள்கலனில் ஜென்கின்ஸை எவ்வாறு இயக்குவது மற்றும் அதில் அனுப்பப்பட்ட டாக்கர் டீமான் சாக்கெட் மூலம் பைப்லைன்களை உருவாக்குவது மற்றும் நீக்குவது எப்படி என்பது பற்றிய கட்டுரையை நான் கண்டேன். இந்த யோசனை எனக்கு பிடித்திருந்தது, ஆனால் நான் மேலும் சென்று டோக்கருக்குள் நேரடியாக டோக்கரை இயக்குவதைப் பரிசோதிக்க முடிவு செய்தேன். அந்த நேரத்தில், டோக்கர் படங்களைப் பதிவிறக்குவதும், மற்றொரு கொள்கலனுக்குள் சோதனைக்குத் தேவையான அனைத்து பயன்பாடுகளுக்கும் கொள்கலன்களை உருவாக்குவதும் முற்றிலும் தர்க்கரீதியான தீர்வாக எனக்குத் தோன்றியது (இதை ஒரு ஸ்டேஜிங் கொள்கலன் என்று அழைக்கலாம்). -rm கொடியுடன் ஒரு ஸ்டேஜிங் கொள்கலனைத் தொடங்குவது யோசனையாக இருந்தது, அது நிறுத்தப்பட்டவுடன் முழு கொள்கலனையும் அதன் அனைத்து உள்ளடக்கங்களையும் தானாகவே நீக்குகிறது. நான் டோக்கரில் இருந்தே டோக்கர் படத்தை டிங்கர் செய்தேன் (
பயிற்சி. கூம்புகள்
கொள்கலனை எனக்குத் தேவையான வழியில் வேலை செய்ய நான் புறப்பட்டேன், மேலும் எனது சோதனைகளைத் தொடர்ந்தேன், இதன் விளைவாக எண்ணற்ற மொட்டுகள் உருவாகின. எனது சுய சித்திரவதையின் விளைவாக பின்வரும் வழிமுறை இருந்தது:
-
நாங்கள் டோக்கர் கொள்கலனை ஊடாடும் பயன்முறையில் தொடங்குகிறோம்.
docker run --privileged -it docker:18.09.6
கொள்கலனின் பதிப்பில் கவனம் செலுத்துங்கள், வலது அல்லது இடதுபுறம் செல்லவும், உங்கள் DinD பூசணிக்காயாக மாறும். உண்மையில், ஒரு புதிய பதிப்பு வெளியிடப்படும் போது விஷயங்கள் அடிக்கடி உடைந்துவிடும்.
நாம் உடனடியாக ஷெல்லுக்குள் செல்ல வேண்டும். -
எந்த கொள்கலன்கள் இயங்குகின்றன என்பதைக் கண்டறிய முயற்சிக்கிறோம் (பதில்: எதுவுமில்லை), ஆனால் எப்படியும் கட்டளையை இயக்குவோம்:
docker ps
நீங்கள் கொஞ்சம் ஆச்சரியப்படுவீர்கள், ஆனால் டோக்கர் டீமான் கூட இயங்கவில்லை என்று மாறிவிடும்:
error during connect: Get http://docker:2375/v1.40/containers/json: dial tcp: lookup docker on 192.168.65.1:53: no such host
-
அதை நாமே இயக்குவோம்:
dockerd &
மற்றொரு விரும்பத்தகாத ஆச்சரியம்:
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Iptables not found
-
iptables மற்றும் bash தொகுப்புகளை நிறுவவும் (எல்லாம் sh ஐ விட பாஷில் வேலை செய்வது மிகவும் இனிமையானது):
apk add --no-cache iptables bash
-
பாஷ் தொடங்குவோம். இறுதியாக நாங்கள் வழக்கமான ஷெல்லுக்கு திரும்பினோம்
-
டோக்கரை மீண்டும் தொடங்க முயற்சிப்போம்:
dockerd &
நாம் ஒரு நீண்ட தாள் பதிவுகளைப் பார்க்க வேண்டும்:
INFO[2019-11-25T19:51:19.448080400Z] Daemon has completed initialization INFO[2019-11-25T19:51:19.474439300Z] API listen on /var/run/docker.sock
-
Enter ஐ அழுத்தவும். நாங்கள் மீண்டும் களமிறங்குகிறோம்.
இனிமேல், நமது Docker கண்டெய்னருக்குள் மற்ற கண்டெய்னர்களை லான்ச் செய்ய முயற்சி செய்யலாம், ஆனால் நமது Docker கன்டெய்னருக்குள் மற்றொரு Docker கண்டெய்னரை லான்ச் செய்ய நினைத்தாலோ அல்லது ஏதாவது தவறு ஏற்பட்டு கன்டெய்னர் செயலிழந்தாலோ என்ன செய்வது? மீண்டும் தொடங்குங்கள்.
சொந்த DinD கொள்கலன் மற்றும் புதிய சோதனைகள்
மேலே உள்ள படிகளை மீண்டும் மீண்டும் செய்வதைத் தவிர்க்க, எனது சொந்த DinD கொள்கலனை உருவாக்கினேன்:
வேலை செய்யும் DinD தீர்வு, டோக்கருக்குள் டோக்கரை மீண்டும் மீண்டும் இயக்கவும் மேலும் சாகசப் பரிசோதனைகளைச் செய்யவும் திறனை எனக்கு அளித்தது.
MySQL மற்றும் Nodejs ஐ இயக்குவது போன்ற ஒரு (வெற்றிகரமான) பரிசோதனையை இப்போது விவரிக்கப் போகிறேன்.
மிகவும் பொறுமையிழந்தவர்கள் இங்கே எப்படி இருந்தது என்பதைப் பார்க்கலாம்
எனவே, ஆரம்பிக்கலாம்:
-
ஊடாடும் பயன்முறையில் DinD ஐத் தொடங்குகிறோம். DinD இன் இந்தப் பதிப்பில், நம் குழந்தைக் கொள்கலன்கள் பயன்படுத்தக்கூடிய அனைத்து போர்ட்களையும் கைமுறையாக வரைபடமாக்க வேண்டும் (நான் ஏற்கனவே இதைச் செய்து வருகிறேன்)
docker run --privileged -it -p 80:8080 -p 3306:3306 alekslitvinenk/dind
நாங்கள் பாஷில் இறங்குகிறோம், அங்கிருந்து உடனடியாக குழந்தை கொள்கலன்களைத் தொடங்கலாம்.
-
MySQL ஐ துவக்கவும்:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=strongpassword -d -p 3306:3306 mysql
-
தரவுத்தளத்தை உள்நாட்டில் இணைப்பது போலவே நாங்கள் இணைக்கிறோம். எல்லாம் செயல்படுவதை உறுதி செய்வோம்.
-
இரண்டாவது கொள்கலனை இயக்கவும்:
docker run -d --rm -p 8080:8080 alekslitvinenk/hello-world-nodejs-server
போர்ட் மேப்பிங் சரியாக இருக்கும் என்பதை நினைவில் கொள்ளவும் 8080:8080, நாங்கள் ஏற்கனவே போர்ட் 80 ஐ ஹோஸ்டில் இருந்து பெற்றோர் கண்டெய்னருக்கு போர்ட் 8080 க்கு வரைபடமாக்கியுள்ளோம்.
-
நாங்கள் உலாவியில் உள்ள லோக்கல் ஹோஸ்டுக்குச் செல்கிறோம், சேவையகம் “ஹலோ வேர்ல்ட்!” என்று பதிலளிப்பதை உறுதிசெய்யவும்.
என் விஷயத்தில், உள்ளமைக்கப்பட்ட டோக்கர் கொள்கலன்களுடனான சோதனை மிகவும் நேர்மறையானதாக மாறியது, மேலும் நான் தொடர்ந்து திட்டத்தை உருவாக்கி அதை மேடையில் பயன்படுத்துவேன். குபெர்னெட்டஸ் மற்றும் ஜென்கின்ஸ் எக்ஸ் ஆகியவற்றை விட இது மிகவும் இலகுவான தீர்வு என்று எனக்குத் தோன்றுகிறது. ஆனால் இது எனது அகநிலை கருத்து.
இன்றைய கட்டுரைக்கு அவ்வளவுதான் என்று நினைக்கிறேன். அடுத்த கட்டுரையில், டோக்கரில் டோக்கரை மீண்டும் மீண்டும் இயக்குவது மற்றும் உள்ளமைக்கப்பட்ட கொள்கலன்களில் ஆழமாக அடைவுகளை ஏற்றுவது பற்றிய விரிவான சோதனைகளை விவரிக்கிறேன்.
சோசலிஸ்ட் கட்சி இந்தத் திட்டம் உங்களுக்கு பயனுள்ளதாக இருந்தால், GitHub இல் ஒரு நட்சத்திரத்தைக் கொடுத்து, அதை ஃபோர்க் செய்து உங்கள் நண்பர்களிடம் சொல்லுங்கள்.
திருத்து 1 பிழைகள் சரி செய்யப்பட்டன, 2 வீடியோக்களில் கவனம் செலுத்தப்பட்டது
ஆதாரம்: www.habr.com