ዶከር መጫወቻ ነው ወይስ አይደለም? ወይስ አሁንም ነው?

ሁሉም ሰው ሰላም!

ወደ ርዕሱ በቀጥታ መሄድ እፈልጋለሁ፣ ግን ስለ ታሪኬ ትንሽ መናገር የበለጠ ትክክል ይሆናል፡-

ግቤት

የፊት ገፅ ነጠላ ገፅ አፕሊኬሽኖችን፣ ስካላ/ጃቫ እና ኖዴጅስ በአገልጋዩ ላይ የማዘጋጀት ልምድ ያለኝ ፕሮግራመር ነኝ።

ለረጅም ጊዜ (በእርግጠኝነት አንድ ባልና ሚስት ወይም ሶስት ዓመታት) ፣ ዶከር ከሰማይ የመጣ መና ነው እና በአጠቃላይ በጣም ጥሩ መሣሪያ ነው እና ሁሉም ገንቢ ሊጠቀምበት ይገባል የሚል አስተያየት ነበረኝ። እና ከዚህ በመነሳት እያንዳንዱ ገንቢ Docker በአካባቢያቸው ማሽን ላይ መጫን አለበት. ስለ እኔ አስተያየት ፣ በተመሳሳይ hh ላይ የተለጠፉትን ክፍት ቦታዎች ይመልከቱ ። እያንዳንዱ ሰከንድ ስለ ዶከር መጠቀስ ይዟል፣ እና እርስዎ ባለቤት ከሆኑ፣ ይህ የእርስዎ ተወዳዳሪ ጥቅም ይሆናል 😉

በመንገዴ ላይ፣ ለዶከር እና ለሥነ-ምህዳሩ ያላቸው የተለያየ አመለካከት ያላቸው ብዙ ሰዎችን አገኘሁ። አንዳንዶች ይህ የመድረክ አቋራጭ ተግባራትን የሚያረጋግጥ ምቹ ነገር ነው ብለዋል ። ሁለተኛው ደግሞ ለምን በኮንቴይነር ውስጥ እንደሚሮጡ እና ከሱ ምን ትርፍ እንደሚያስገኝ አልተረዱም, ሶስተኛው ምንም ግድ አልሰጣቸውም እና ምንም አላስቸገሩም (ኮዱን ብቻ ጽፈው ወደ ቤታቸው ሄዱ - ቀናሁባቸው, በ. መንገድ :)

የአጠቃቀም ምክንያቶች

ዶከር ለምን ተጠቀምኩ? ምናልባት በሚከተሉት ምክንያቶች:

  • የውሂብ ጎታ ማስጀመር, 99% መተግበሪያዎች ይጠቀማሉ
  • nginx ን ለግንባር ማከፋፈያ ማስጀመር እና ለኋለኛው ፕሮክሲ ማድረግ
  • ማመልከቻውን በዶክተር ምስል ማሸግ ይችላሉ ፣ በዚህ መንገድ የእኔ መተግበሪያ ዶከር ባለበት ቦታ ሁሉ ይሰራል ፣ የስርጭቱ ችግር ወዲያውኑ ይፈታል ።
  • የአገልግሎት ግኝት ከሳጥኑ ውስጥ ፣ ማይክሮ ሰርቪስ መፍጠር ይችላሉ ፣ እያንዳንዱ መያዣ (ከጋራ አውታረመረብ ጋር የተገናኘ) በተለዋጭ ስም በቀላሉ ወደ ሌላ መድረስ ይችላል ፣ በጣም ምቹ
  • መያዣ መፍጠር እና በውስጡ "መጫወት" ያስደስታል.

ስለ ዶከር ሁል ጊዜ የማልወደው ነገር፡-

  • ማመልከቻዬ እንዲሰራ፣ በአገልጋዩ ላይ ዶከር ልሹ ያስፈልገኛል። ማመልከቻዎቼ በ jre ወይም nodejs ላይ የሚሰሩ ከሆነ እና ለእነሱ ያለው አካባቢ ቀድሞውኑ በአገልጋዩ ላይ ከሆነ ለምን ይህን ያስፈልገኛል?
  • የራሴን (የግል) በአገር ውስጥ የተሰራ ምስሌን በርቀት አገልጋይ ላይ ማስኬድ ከፈለግኩ የራሴ ዶከር ማከማቻ ያስፈልገኛል፣ መዝገብ ቤት የሆነ ቦታ ለመስራት ያስፈልገኛል እና https ን ማዋቀር አለብኝ ምክንያቱም ዶከር ክሊ በ https ላይ ብቻ ይሰራል። ወይ ጉድ...በእርግጥ ምስሉን በአገር ውስጥ ለማስቀመጥ አማራጮች አሉ። docker save እና ምስሉን በ scp ብቻ ይላኩ ... ግን ይህ በጣም ብዙ የሰውነት እንቅስቃሴዎች ነው. እና በተጨማሪ, የእራስዎ ማከማቻ እስኪታይ ድረስ "ክራች" መፍትሄ ይመስላል
  • docker-compose. መያዣዎችን ለማስኬድ ብቻ ያስፈልጋል. ይኼው ነው. ሌላ ምንም ማድረግ አይችልም። Docker-compose የፋይሎቹ ስሪቶች ስብስብ አለው ፣ የራሱ አገባብ። ምንም ያህል ገላጭ ቢሆንም፣ ሰነዳቸውን ማንበብ አልፈልግም። ሌላ ቦታ አያስፈልገኝም።
  • በቡድን ውስጥ በሚሰሩበት ጊዜ ብዙ ሰዎች Dockerfileን በጣም ጠማማ በሆነ መንገድ ይጽፋሉ ፣ እንዴት እንደሚሸጎጥ አይረዱም ፣ የሚፈልጉትን ሁሉ ይጨምራሉ እና በምስሉ ላይ የማይፈልጉትን ፣ በ Dockerhub ወይም በግል ማከማቻ ውስጥ ከሌሉ ምስሎች ይወርሳሉ ፣ አንዳንድ ይፍጠሩ docker-compose የውሂብ ጎታ ያላቸው ፋይሎች እና ምንም የሚቀጥል ነገር የለም። በተመሳሳይ ጊዜ ገንቢዎቹ ዶከር ጥሩ እንደሆነ፣ ሁሉም ነገር በአካባቢያቸው እንደሚሠራላቸው በኩራት ያውጃሉ፣ እና HR በአስፈላጊ ሁኔታ በክፍት ቦታው ላይ “Docker እንጠቀማለን እና እንደዚህ ዓይነት የሥራ ልምድ ያለው እጩ እንፈልጋለን” በማለት በኩራት ያውጃሉ።
  • በዶከር ውስጥ ሁሉንም ነገር ስለማሳደግ ሀሳቦች ያለማቋረጥ ያሳስበኛል፡ postgresql, kafka, redis. ሁሉም ነገር በመያዣዎች ውስጥ የማይሰራ መሆኑ በጣም ያሳዝናል, ሁሉም ነገር ለማዋቀር እና ለማሄድ ቀላል አይደለም. ይህ በሶስተኛ ወገን ገንቢዎች የተደገፈ ነው, እና በሻጮቹ እራሳቸው አይደለም. እና በነገራችን ላይ, ጥያቄው ወዲያውኑ ይነሳል: ሻጮች በዶከር ውስጥ ምርቶቻቸውን ስለመጠበቅ አይጨነቁም, ለምን ይህ ነው, ምናልባት አንድ ነገር ያውቁ ይሆናል?
  • ሾለ መያዣው መረጃ ጽናት ሁልጊዜ ጥያቄው ይነሳል. እና ከዚያ እርስዎ ያስባሉ ፣ የአስተናጋጁ ማውጫውን ብቻ ልሰቅል ወይም የመትከያ ድምጽ መፍጠር ወይም አሁን ያለው የውሂብ መያዣ እሰራለሁ deprecated? ማውጫን ከጫንኩ፣ ከዚያም በመያዣው ውስጥ ያለው የተጠቃሚው uid እና gid ኮንቴይነሩን ካስነሳው ተጠቃሚ መታወቂያ ጋር የሚዛመድ መሆኑን ማረጋገጥ አለብኝ፣ ይህ ካልሆነ ግን በመያዣው የተፈጠሩ ፋይሎች ከስር መብቶች ጋር ይፈጠራሉ። ከተጠቀምኩ volume ከዚያ ውሂቡ በቀላሉ በአንዳንድ ውስጥ ይፈጠራል። /usr/* እና እንደ መጀመሪያው ጉዳይ ከ uid እና gid ጋር ተመሳሳይ ታሪክ ይኖራል። የሶስተኛ ወገን አካልን እየከፈቱ ከሆነ ሰነዶቹን ማንበብ እና ለጥያቄው መልስ መፈለግ አለብዎት-“በየትኛዎቹ የእቃ መያዥያ ማውጫዎች ውስጥ ክፍሎቹ ፋይሎችን ይጽፋሉ?”

ከዶከር ጋር ለረጅም ጊዜ መቀባጠር እንዳለብኝ ሁልጊዜ አልወደድኩትም። በመነሻ ደረጃ: ኮንቴይነሮችን እንዴት ማስጀመር እንደምችል፣ ከየትኞቹ ምስሎች እንደሚጀመር አወቅሁ፣ የረዥም ዶከር ትዕዛዞች ተለዋጭ ስሞችን የያዙ Makefiles ሠሩ። ዶከር-አጻጻፍን እጠላው ነበር ምክንያቱም በዶክተር ስነ-ምህዳር ውስጥ ሌላ መሳሪያ መማር አልፈልግም ነበር. እና docker-compose up በተለይ አሁንም እዚያ ቢገናኙ አስጨንቆኝ ነበር። build ግንባታዎች, ቀደም ሲል ከተሰበሰቡ ምስሎች ይልቅ. የምር የምፈልገው አንድን ምርት በብቃት እና በፍጥነት መስራት ብቻ ነበር። ግን ዶከርን እንዴት መጠቀም እንዳለብኝ ማወቅ አልቻልኩም።

ማስተዋወቅ ይቻላል

በቅርብ ጊዜ (ከሦስት ወራት በፊት) ከDevOps ቡድን ጋር ሠርቻለሁ፣ እያንዳንዱ አባል ማለት ይቻላል ለዶከር አሉታዊ አመለካከት ነበረው። በምክንያት፡-

  • ዶከር iptablesን ይደነግጋል (ምንም እንኳን በ daemon.json ውስጥ ማሰናከል ቢችሉም)
  • ዶከር አስቸጋሪ ነው እና በምርት ውስጥ አናስኬደውም።
  • ዶከር ዴሞን ከተበላሸ ሁሉም መሠረተ ልማት ያላቸው ኮንቴይነሮች በዚህ መሠረት ይወድቃሉ
  • ዶከር አያስፈልግም
  • የአንሲብል እና ምናባዊ ማሽኖች ካሉ ለምን docker

በዚሁ ሥራ ላይ, ከሌላ መሣሪያ ጋር ተዋወቅሁ - ሊቻል የሚችል. ስለሱ አንድ ጊዜ ሰማሁ፣ ግን የራሴን የመጫወቻ መጽሐፍት ለመጻፍ አልሞከርኩም። እና አሁን ተግባሮቼን መጻፍ ጀመርኩ እና ከዚያ እይታዬ ሙሉ በሙሉ ተለወጠ! ስለተገነዘብኩት፡ Ansible ለተመሳሳይ ዶከር ኮንቴይነሮች፣ የምስል ግንባታዎች፣ ኔትወርኮች ወዘተ ለማስኬድ ሞጁሎች አሉት እና ኮንቴይነሮች በአገር ውስጥ ብቻ ሳይሆን በርቀት አገልጋዮች ላይም ሊሰሩ ይችላሉ! ደስታዬ ወሰን አልነበረውም - አንድ መደበኛ መሳሪያ አግኝቼ Makefile እና ዶከር ያቀናበረው ፋይሎቼን ጣልኩ፣ በ yaml ተግባራት ተተኩ። እንደ ግንባታዎችን በመጠቀም ኮዱ ቀንሷል loop, when, ወዘተ

እንደ ዳታቤዝ ያሉ የሶስተኛ ወገን ክፍሎችን ለማሄድ Docker

በቅርቡ ከ ssh ዋሻዎች ጋር ተዋውቄያለሁ። የርቀት አገልጋይ ወደብ ወደ አካባቢያዊ ወደብ "ማስተላለፍ" በጣም ቀላል እንደሆነ ተገለጸ። የርቀት አገልጋዩ በደመና ውስጥ ያለ ማሽን ወይም በቨርቹዋል ቦክስ ውስጥ የሚሰራ ምናባዊ ማሽን ሊሆን ይችላል። እኔ ወይም ባልደረባዬ የውሂብ ጎታ (ወይም ሌላ የሶስተኛ ወገን አካል) ካስፈለገን በቀላሉ አገልጋዩን በዚህ አካል አስጀምረው አገልጋዩ በማይፈለግበት ጊዜ ማጥፋት እንችላለን። ወደብ ማስተላለፍ በዶክተር ኮንቴይነር ውስጥ ከሚሰራ የውሂብ ጎታ ጋር ተመሳሳይ ውጤት ይሰጣል።

ይህ ትዕዛዝ የእኔን የአከባቢ ወደብ postgresql ወደሚያሄድ የርቀት አገልጋይ ያስተላልፋል፡

ssh -L 9000: localhost: 5432 [ኢሜል የተጠበቀ]

የርቀት አገልጋይን መጠቀም ችግሩን ከቡድን እድገት ጋር ይፈታል. እንደዚህ አይነት አገልጋይ በአንድ ጊዜ በበርካታ ገንቢዎች ሊጠቀሙበት ይችላሉ፤ postgresqlን ማዋቀር፣ Docker እና ሌሎች ውስብስብ ነገሮችን መረዳት መቻል አያስፈልጋቸውም። በርቀት አገልጋይ ላይ, የተወሰነ ስሪት መጫን አስቸጋሪ ከሆነ, በራሱ በ Docker ውስጥ ተመሳሳይ የውሂብ ጎታ መጫን ይችላሉ. ሁሉም ገንቢዎች የ ssh መዳረሻ ማቅረብ ነው!

የኤስኤስኤች ዋሻዎች የመደበኛ ቪፒኤን ውሱን ተግባር መሆናቸውን በቅርቡ አንብቤያለሁ! በቀላሉ OpenVPN ወይም ሌላ የቪፒኤን አተገባበርን መጫን፣መሠረተ ልማት አውጥተው ለገንቢዎች እንዲጠቀሙበት መስጠት ይችላሉ። ይህ በጣም አሪፍ ነው!

እንደ እድል ሆኖ፣ AWS፣ GoogleCloud እና ሌሎች አንድ አመት የነጻ አጠቃቀም ይሰጡዎታል፣ ስለዚህ ይጠቀሙባቸው! ጥቅም ላይ በማይውሉበት ጊዜ ካጠፉዋቸው ርካሽ ናቸው. እንደ gcloud ያለ የርቀት አገልጋይ ለምን እንደሚያስፈልገኝ ሁልጊዜ አስብ ነበር፣ ያገኘኋቸው ይመስላል።

እንደ አካባቢያዊ ምናባዊ ማሽን, በዶከር ኮንቴይነሮች ውስጥ በንቃት ጥቅም ላይ የዋለውን ተመሳሳይ አልፓይን መጠቀም ይችላሉ. ደህና፣ ወይም ማሽኑ በፍጥነት እንዲነሳ ለማድረግ አንዳንድ ቀላል ክብደት ያላቸው ስርጭቶች።

ቁም ነገር፡ ዳታቤዝ እና ሌሎች የመሠረተ ልማት ጥቅማ ጥቅሞችን በርቀት አገልጋዮች ላይ ወይም በቨርቹዋል ቦክስ ማሄድ ትችላለህ። ለእነዚህ አላማዎች ዶከር አያስፈልገኝም።

ስለ ዶከር ምስሎች እና ስርጭት ትንሽ

አስቀድሜ ጽፌያለሁ ጽሑፍ ዶከር ምስሎችን መጠቀም ምንም አይነት ዋስትና እንደማይሰጥ ለማስተላለፍ የፈለኩት። የዶክተር ምስሎች የዶክተር መያዣን ለመፍጠር ብቻ ያስፈልጋሉ. ወደ ዶከር ምስል እያሳደግክ ከሆነ፣ የዶከር ኮንቴይነሮችን ለመጠቀም እያሳደግክ ነው እና እነሱን ብቻ ነው የምትጠቀማቸው።

የሶፍትዌር ገንቢዎች ምርቶቻቸውን በዶክተር ምስል ብቻ ወደሚልኩበት ቦታ አይተህ ታውቃለህ?
የአብዛኛዎቹ ምርቶች ውጤት ለአንድ የተወሰነ መድረክ ሁለትዮሽ ፋይሎች ናቸው ፣ እነሱ በቀላሉ ወደ ዶከር ምስል ተጨምረዋል ፣ ይህም ከተፈለገው መድረክ የተወረሰ ነው። በ dockerhub ላይ ብዙ ተመሳሳይ ምስሎች ለምን እንዳሉ አስበህ ታውቃለህ? ለምሳሌ nginx አስገባ፣ ከተለያዩ ሰዎች 100500 ምስሎችን ታያለህ። እነዚህ ሰዎች nginxን በራሱ አላዳበሩም ፣ በቀላሉ ኦፊሴላዊ nginxን ወደ ዶከር ምስላቸው አክለው ኮንቴይነሮችን ለማስጀመር እንዲመች ከራሳቸው ውቅሮች ጋር ቀመሱት።

በአጠቃላይ ፣ በቀላሉ በ tgz ውስጥ ማከማቸት ይችላሉ ፣ አንድ ሰው በዶክተር ውስጥ ማስኬድ ካለበት ፣ ከዚያ tgz ወደ Dockerfile እንዲጨምር ፣ ከተፈለገው አካባቢ እንዲወርሱ እና አፕሊኬሽኑን እራሱ በ tgz ውስጥ የማይለውጡ ተጨማሪ ዳቦዎችን ይፍጠሩ። ዶከር ምስል የሚፈጥር ማንኛውም ሰው tgz ምን እንደሆነ እና ምን መስራት እንዳለበት ያውቃል. ዶከርን የምጠቀመው በዚህ መንገድ ነው። እዚህ

ቁም ነገር፡ የዶክተር መዝገብ አያስፈልገኝም፣ አንድ ዓይነት S3 እጠቀማለሁ ወይም እንደ ጎግል ድራይቭ/dropbox ያለ የፋይል ማከማቻ

ዶከር በ CI

የሰራኋቸው ኩባንያዎች በሙሉ ተመሳሳይ ናቸው። ብዙውን ጊዜ ግሮሰሪ ናቸው. ማለትም አንድ አፕሊኬሽን፣ አንድ የቴክኖሎጂ ቁልል (ምናልባትም አንድ ባልና ሚስት ወይም ሶስት የፕሮግራሚንግ ቋንቋዎች) አላቸው።

እነዚህ ኩባንያዎች የCI ሂደት በሚካሄድባቸው ሰርቨሮቻቸው ላይ ዶከርን ይጠቀማሉ። ጥያቄ፡- በሰርቨሮችዎ ላይ በዶከር ኮንቴይነር ውስጥ ፕሮጀክቶችን መገንባት ለምን አስፈለገዎት? ለምንድነው ለግንባታው አካባቢን ብቻ አያዘጋጁም ለምሳሌ አስፈላጊ የሆኑትን የ nodejs, php, jdk, ssh keys, ወዘተ ቅጂዎች ግንባታው ወደሚካሄድበት አገልጋይ የሚጭን ሊቻል የሚችል የመጫወቻ መጽሐፍ ይፃፉ?

አሁን ይህ እራሴን በእግር መተኮሱን ተረድቻለሁ ፣ ምክንያቱም ዶከር ከመነጠል ጋር ምንም ትርፍ አያመጣም። በዶክተር ውስጥ ከCI ጋር ያጋጠሙኝ ችግሮች፡-

  • እንደገና ለመገንባት docker ምስል ያስፈልግዎታል። ምስል መፈለግ ወይም የእራስዎን ዶከርፋይል መጻፍ ያስፈልግዎታል.
  • አንዳንድ ssh ቁልፎችን ለማስተላለፍ የሚያስፈልግዎ 90% ሚስጥራዊ ውሂብ ወደ ዶከር ምስል መጻፍ የማይፈልጉት።
  • መያዣው ተፈጠረ እና ይሞታል, ሁሉም መሸጎጫዎች ከእሱ ጋር ጠፍተዋል. የሚቀጥለው ግንባታ ሁሉንም የፕሮጀክት ጥገኛዎች እንደገና ያወርዳል, ይህም ጊዜ የሚወስድ እና ውጤታማ ያልሆነ, እና ጊዜ ገንዘብ ነው.

ገንቢዎች በዶከር ኮንቴይነሮች ውስጥ ፕሮጀክቶችን አይገነቡም (አንድ ጊዜ እንደዚህ አይነት አድናቂ ነበርኩ ፣ በእውነቱ ፣ ባለፈው xD ለራሴ አዝኛለሁ)። በጃቫ ውስጥ ብዙ ስሪቶች ሊኖሩዎት እና በአንድ ትዕዛዝ አሁን ወደሚፈልጉት መለወጥ ይችላሉ። በ nodejs ውስጥ ተመሳሳይ ነው, nvm አለ.

መደምደሚያ

ዶከር በጣም ኃይለኛ እና ተለዋዋጭ መሳሪያ ነው ብዬ አምናለሁ, ይህ ጉዳቱ ነው (የሚገርም ይመስላል, አዎ). በእሱ እርዳታ ኩባንያዎች በቀላሉ ሊጠመዱ እና በሚያስፈልጉ እና በማይፈለጉበት ቦታ ሊጠቀሙበት ይችላሉ. ገንቢዎች ኮንቴይነቶቻቸውን፣ አንዳንድ አካባቢዎቻቸውን ያስጀምራሉ፣ ከዚያም ሁሉም ያለምንም ችግር ወደ CI እና ምርት ይፈስሳሉ። የዴቭኦፕስ ቡድን እነዚህን መያዣዎች ለማስኬድ አንዳንድ አይነት ኮድ እየጻፈ ነው።

ዶከርን በ ላይ ብቻ ይጠቀሙ በጣም የቅርብ ጊዜ በስራ ሂደትዎ ውስጥ ደረጃ ፣ መጀመሪያ ላይ ወደ ፕሮጀክቱ አይጎትቱት። የእርስዎን የንግድ ችግሮች አይፈታም። ችግሮቹን ወደ ሌላ ደረጃ ብቻ ያንቀሳቅሳል እና የራሱን መፍትሄዎች ያቀርባል, እርስዎ ሁለት ስራዎችን ይሰራሉ.

ዶከር ሲያስፈልግ: ወደ መደምደሚያ ደርሻለሁ ዶከር የተሰጠውን ሂደት ለማመቻቸት በጣም ጥሩ ነው ነገር ግን መሰረታዊ ተግባራትን በመገንባት ላይ አይደለም

አሁንም ዶከር ለመጠቀም ከወሰኑ፡-

  • በጣም ተጠንቀቅ
  • ገንቢዎች ዶከርን እንዲጠቀሙ አያስገድዱ
  • አጠቃቀሙን በአንድ ቦታ ላይ ያውርዱት፣ በሁሉም የዶክፋይል እና ዶከር አዘጋጅ ማከማቻዎች ላይ አያሰራጩት።

PS:

ስላነበቡ እናመሰግናለን፣ በጉዳዮችዎ ውስጥ ግልፅ ውሳኔዎችን እና ውጤታማ የስራ ቀናትን እመኛለሁ!

ምንጭ: hab.com

አስተያየት ያክሉ