Docker puas yog ib qho khoom ua si lossis tsis? Los yog tseem muaj tseeb?

Nyob zoo txhua leej txhua tus!

Kuv yeej xav tau ncaj nraim rau lub ncauj lus, tab sis nws yuav yog qhov tseeb dua los qhia me ntsis txog kuv zaj dab neeg:

nkag

Kuv yog ib tug programmer uas muaj kev paub dhau los hauv kev txhim kho frontend ib nplooj ntawv thov, scala/java thiab nodejs ntawm server.

Tau ntev heev (tseem yog ob peb lossis peb xyoos), Kuv tau xav tias Docker yog manna los saum ntuj ceeb tsheej thiab feem ntau yog cov cuab yeej txias heev thiab txhua tus tsim tawm yuav tsum siv tau. Thiab los ntawm qhov no nws ua raws li txhua tus tsim tawm yuav tsum muaj Docker ntsia ntawm lawv lub tshuab hauv zos. Yuav ua li cas txog kuv lub tswv yim, saib los ntawm cov chaw haujlwm uas tau tshaj tawm rau tib hh. Txhua qhov thib ob muaj qhov hais txog docker, thiab yog tias koj muaj nws, qhov no yuav yog koj qhov kev sib tw kom zoo dua πŸ˜‰

Ntawm kuv txoj kev, kuv tau ntsib ntau tus neeg, nrog rau lawv tus cwj pwm txawv ntawm Docker thiab nws cov ecosystem. Qee tus hais tias qhov no yog qhov yooj yim tshaj plaws uas lav kev ua haujlwm hla lub platform. Qhov thib ob tsis nkag siab tias vim li cas lawv yuav tsum khiav hauv cov thawv thiab cov txiaj ntsig yuav los ntawm nws, qhov thib peb tsis quav ntsej thiab tsis thab (lawv tsuas yog sau tus lej thiab mus tsev - Kuv khib lawv, los ntawm cov txoj kev :)

Yog vim li cas siv

Vim li cas kuv thiaj siv docker? Tej zaum yog vim li cas hauv qab no:

  • database launch, 99% ntawm daim ntawv thov siv lawv
  • launching nginx rau frontend faib thiab proxying rau backend
  • koj tuaj yeem ntim daim ntawv thov hauv daim duab docker, txoj kev no kuv daim ntawv thov yuav ua haujlwm txhua qhov chaw muaj docker, qhov teeb meem kev faib tawm tam sim ntawd
  • kev pabcuam nrhiav pom tawm ntawm lub thawv, koj tuaj yeem tsim microservices, txhua lub thawv (txuas mus rau ib lub network sib txuas) tuaj yeem ncav cuag lwm tus ntawm lub npe, yooj yim heev
  • Nws lom zem los tsim lub thawv thiab "ua si" hauv nws.

Qhov kuv ib txwm tsis nyiam txog docker:

  • Txhawm rau kom kuv daim ntawv thov ua haujlwm, Kuv xav tau Docker nws tus kheej ntawm lub server. Vim li cas kuv thiaj xav tau qhov no yog tias kuv daim ntawv thov khiav ntawm jre lossis nodejs thiab ib puag ncig rau lawv twb nyob ntawm server?
  • Yog tias kuv xav khiav kuv tus kheej (tus kheej) hauv zos tsim duab ntawm lub chaw taws teeb chaw taws teeb, ces kuv xav tau kuv tus kheej docker repository, Kuv xav tau daim ntawv teev npe ua haujlwm rau qhov chaw thiab kuv kuj yuav tsum tau teeb tsa https, vim tias docker cli tsuas ua haujlwm dhau https. Huag damn... muaj cov kev xaiv, ntawm chav kawm, txuag cov duab hauv zos ntawm docker save thiab tsuas yog xa daim duab ntawm scp... Tab sis qhov ntawd yog ntau lub cev txav. Thiab ib qho ntxiv, nws zoo li "Crutch" tov kom txog thaum koj tus kheej lub chaw cia khoom tshwm
  • docker-compose. Nws tsuas yog xav tau los khiav cov thawv. Yog tag nrho. Nws ua tsis tau lwm yam. Docker-compose Nws muaj ntau yam versions ntawm nws cov ntaub ntawv, nws tus kheej syntax. Txawm hais tias nws tshaj tawm li cas, kuv tsis xav nyeem lawv cov ntaub ntawv. Kuv yuav tsis xav tau nws nyob qhov twg.
  • Thaum ua haujlwm hauv pab pawg, feem ntau cov neeg sau Dockerfile heev crookedly, tsis to taub yuav ua li cas nws yog cached, ntxiv txhua yam lawv xav tau thiab tsis xav tau rau daim duab, tau txais txiaj ntsig los ntawm cov duab uas tsis nyob hauv Dockerhub lossis ib lub chaw khaws khoom ntiag tug, tsim qee yam. docker-compose cov ntaub ntawv nrog databases thiab tsis muaj dab tsi tshwm sim. Nyob rau tib lub sijhawm, cov neeg tsim khoom tau zoo siab tshaj tawm tias Docker yog qhov txias, txhua yam ua haujlwm hauv zos rau lawv, thiab HR tseem ceeb sau rau hauv qhov chaw seem: "Peb siv Docker thiab peb xav tau tus neeg sib tw nrog kev ua haujlwm zoo li no."
  • Kuv niaj hnub haunted los ntawm kev xav txog kev tsa txhua yam hauv Docker: postgresql, kafka, redis. Nws yog kev hlub uas tsis yog txhua yam ua haujlwm hauv cov thawv, tsis yog txhua yam yooj yim rau kev teeb tsa thiab khiav. Qhov no yog kev txhawb nqa los ntawm cov neeg tsim khoom thib peb, thiab tsis yog los ntawm cov neeg muag khoom lawv tus kheej. Thiab los ntawm txoj kev, cov lus nug tam sim ntawd tshwm sim: cov neeg muag khoom tsis txhawj xeeb txog kev tswj hwm lawv cov khoom hauv Docker, vim li cas qhov no, tej zaum lawv paub qee yam?
  • Cov lus nug ib txwm tshwm sim txog qhov kev pheej hmoo ntawm cov ntaub ntawv ntim khoom. thiab tom qab ntawd koj xav tias, kuv yuav tsum cia li mount lub host directory lossis tsim ib lub ntim docker lossis ua ib lub thawv cov ntaub ntawv uas tam sim no deprecated? Yog hais tias kuv mount ib phau ntawv, ces kuv yuav tsum xyuas kom meej tias cov uid thiab gid ntawm tus neeg siv nyob rau hauv lub thawv sib xws tus id ntawm tus neeg siv uas launched lub thawv, txwv tsis pub cov ntaub ntawv tsim los ntawm lub thawv yuav raug tsim nrog cov cai hauv paus. Yog kuv siv volume ces cov ntaub ntawv yuav tsuas yog tsim nyob rau hauv ib co /usr/* thiab yuav muaj tib zaj dab neeg nrog uid thiab gid li thawj rooj plaub. Yog tias koj tab tom tsim cov khoom siv thib peb, koj yuav tsum tau nyeem cov ntaub ntawv thiab nrhiav cov lus teb rau lo lus nug: "nyob rau hauv lub thawv ntawv twg cov khoom siv sau cov ntaub ntawv?"

Kuv ib txwm tsis nyiam qhov tseeb tias kuv yuav tsum tau tinker nrog Docker ntev dhau lawm ntawm thawj theem: Kuv xav paub yuav ua li cas tso cov thawv, cov duab dab tsi los tso tawm, ua Makefiles uas muaj npe rau Docker cov lus txib ntev. Kuv ntxub docker-compose vim kuv tsis xav kawm lwm yam cuab yeej hauv docker ecosystem. THIAB docker-compose up Nws thab kuv, tshwj xeeb tshaj yog tias lawv tseem ntsib nyob ntawd build kev tsim kho, es tsis yog cov duab sib dhos ua ke. Txhua yam kuv xav tau yog tsuas yog ua cov khoom lag luam zoo thiab nrawm. Tab sis kuv tsis tuaj yeem paub yuav ua li cas siv docker.

Taw qhia Ansible

Tsis ntev los no (peb lub hlis dhau los), kuv tau ua haujlwm nrog pab pawg DevOps, yuav luag txhua tus tswvcuab uas muaj tus cwj pwm tsis zoo rau Docker. Yog vim li cas:

  • docker txoj cai iptables (txawm tias koj tuaj yeem lov tes taw nws hauv daemon.json)
  • docker yog buggy thiab peb yuav tsis khiav nws hauv kev tsim khoom
  • Yog tias docker daemon tsoo, ces tag nrho cov ntim nrog cov txheej txheem sib tsoo raws li
  • tsis xav tau docker
  • vim li cas docker yog tias muaj Ansible thiab virtual tshuab

Tib txoj haujlwm, kuv tau paub nrog lwm lub cuab yeej - Ansible. Kuv tau hnov ​​txog nws ib zaug, tab sis kuv tsis tau sim sau kuv tus kheej cov ntawv ua si. Thiab tam sim no kuv pib sau kuv cov haujlwm thiab tom qab ntawd kuv lub zeem muag tau hloov pauv tag nrho! Vim kuv pom tau tias: Ansible muaj cov qauv rau kev khiav tib lub thawv docker, cov duab tsim, tes hauj lwm, thiab lwm yam, thiab cov thawv tuaj yeem khiav tsis yog hauv zos xwb, tab sis kuj ntawm cov chaw taws teeb tswj! Kuv zoo siab paub tsis muaj kev cia siab - Kuv pom ib qho cuab yeej NORMAL thiab pov tseg kuv cov ntaub ntawv Makefile thiab docker-compose, lawv tau hloov nrog yaml cov haujlwm. Cov cai raug txo los ntawm kev siv cov qauv zoo li loop, when, Thiab lwm yam

Docker rau khiav cov khoom thib peb xws li databases

Tsis ntev los no kuv tau paub txog ssh tunnels. Nws tau muab tawm tias nws yooj yim heev rau "them" qhov chaw nres nkoj ntawm chaw taws teeb server mus rau qhov chaw nres nkoj hauv zos. Cov chaw taws teeb server tuaj yeem yog lub tshuab hauv huab lossis lub tshuab virtual khiav hauv VirtualBox. Yog tias kuv cov npoj yaig lossis kuv xav tau cov ntaub ntawv (lossis qee qhov lwm tus neeg sab nrauv), peb tuaj yeem pib lub server nrog cov khoom siv no thiab tua nws thaum tsis xav tau. Chaw nres nkoj xa mus muab cov txiaj ntsig zoo ib yam li cov chaw khaws ntaub ntawv khiav hauv lub thawv docker.

Cov lus txib no xa mus rau kuv qhov chaw nres nkoj hauv zos mus rau cov chaw taws teeb tswj kev khiav haujlwm postgresql:

ssh -L 9000:localhost:5432 [email tiv thaiv]

Siv cov chaw taws teeb tswj kev daws teeb meem nrog kev txhim kho pab pawg. Xws li ib tug neeg rau zaub mov tuaj yeem siv los ntawm ntau tus neeg tsim khoom ib zaug; lawv tsis tas yuav muaj peev xwm teeb tsa postgresql, nkag siab Docker thiab lwm yam kev tsis sib haum xeeb. Ntawm cov chaw taws teeb server, koj tuaj yeem nruab tib lub database hauv Docker nws tus kheej, yog tias nws nyuaj rau nruab ib qho version tshwj xeeb. Txhua tus tsim tawm xav tau yog muab ssh nkag!

Tsis ntev los no kuv tau nyeem tias SSH tunnels yog qhov ua haujlwm tsawg ntawm VPN tsis tu ncua! Koj tuaj yeem yooj yim nruab OpenVPN lossis lwm yam kev siv VPN, teeb tsa cov txheej txheem thiab muab rau cov neeg tsim khoom siv. Qhov no txias heev!

Hmoov zoo, AWS, GoogleCloud thiab lwm tus muab rau koj ib xyoos ntawm kev siv dawb, yog li siv lawv! Lawv pheej yig yog tias koj tua lawv thaum tsis siv. Kuv ib txwm xav tsis thoob vim li cas kuv thiaj xav tau cov chaw taws teeb tswj hwm zoo li gcloud, zoo li kuv pom lawv.

Raws li lub tshuab virtual hauv zos, koj tuaj yeem siv tib lub Alpine, uas nquag siv hauv docker ntim. Zoo, los yog qee qhov kev faib khoom hnyav kom ua rau lub tshuab khau raj sai dua.

Cov kab hauv qab: koj tuaj yeem ua tau thiab yuav tsum tau khiav cov ntaub ntawv thiab lwm yam khoom siv zoo ntawm cov chaw taws teeb tswj lossis hauv virtualbox. Kuv tsis xav tau docker rau cov hom phiaj no.

Ib me ntsis txog cov duab docker thiab kev faib tawm

Kuv twb sau lawm tsab xov xwm nyob rau hauv uas kuv xav qhia hais tias siv docker dluab tsis muaj kev lav. Docker duab tsuas yog xav tau los tsim lub thawv docker. Yog tias koj hloov kho dua tshiab rau cov duab docker, tom qab ntawd koj tab tom hloov kho kom siv docker ntim thiab koj tsuas yog siv lawv xwb.

Koj puas tau pom nyob qhov twg cov software tsim tawm chaw nres nkoj lawv cov khoom tsuas yog hauv daim duab docker?
Qhov tshwm sim ntawm cov khoom lag luam feem ntau yog cov ntaub ntawv binary rau lub platform tshwj xeeb; lawv tsuas yog ntxiv rau cov duab docker, uas tau txais los ntawm lub platform xav tau. Koj puas tau xav paub vim li cas thiaj muaj ntau cov duab zoo sib xws ntawm dockerhub? Piv txwv li, nkag mus rau nginx, koj yuav pom 100500 cov duab los ntawm cov neeg sib txawv. Cov neeg no tsis tau tsim nginx nws tus kheej, lawv tsuas yog ntxiv cov nom nginx rau lawv cov duab docker thiab seasoned nws nrog lawv tus kheej configs rau qhov yooj yim ntawm launching ntim.

Feem ntau, koj tuaj yeem khaws cia hauv tgz, yog tias ib tus neeg xav tau khiav nws hauv docker, ces cia lawv ntxiv tgz rau Dockerfile, tau txais txiaj ntsig los ntawm qhov xav tau ib puag ncig thiab tsim cov buns ntxiv uas tsis hloov daim ntawv thov nws tus kheej hauv tgz. Txhua tus uas yuav tsim cov duab docker yuav paub tias tgz yog dab tsi thiab nws yuav tsum ua haujlwm li cas. Nov yog qhov kuv siv docker S, SΡ“S,

Cov kab hauv qab: Kuv tsis xav tau docker sau npe, Kuv yuav siv qee yam ntawm S3 lossis tsuas yog cov ntaub ntawv khaws cia zoo li google drive /dropbox

Docker hauv CI

Txhua lub tuam txhab uas kuv tau ua haujlwm zoo ib yam. Lawv feem ntau yog khoom noj khoom haus. Ntawd yog, lawv muaj ib daim ntawv thov, ib pawg tshuab (zoo, tej zaum ob peb lossis peb hom lus programming).

Cov tuam txhab no siv docker ntawm lawv cov servers uas cov txheej txheem CI khiav. Lo lus nug: Vim li cas koj thiaj li yuav tsum tsim cov haujlwm hauv lub thawv docker ntawm koj cov servers? Vim li cas ho tsis yog npaj ib puag ncig rau kev tsim, piv txwv li, sau Ansible playbook uas yuav nruab qhov tsim nyog versions ntawm nodejs, php, jdk, luam ssh yuam sij, thiab lwm yam rau lub server uas tsim yuav tshwm sim?

Tam sim no kuv nkag siab tias qhov no yog tua kuv tus kheej hauv ko taw, vim tias docker tsis coj cov txiaj ntsig nrog nws qhov kev sib cais. Cov teeb meem kuv ntsib nrog CI hauv docker:

  • dua koj xav tau ib daim duab docker los tsim. koj yuav tsum nrhiav ib daim duab lossis sau koj tus kheej dockerfile.
  • 90% uas koj xav tau xa mus rau qee tus yuam sij ssh, cov ntaub ntawv zais cia uas koj tsis xav sau rau daim duab docker.
  • lub thawv yog tsim thiab tuag, tag nrho cov caches ploj nrog nws. qhov kev tsim kho tom ntej no yuav rov rub tawm txhua qhov project dependencies, uas yog siv sijhawm thiab tsis muaj txiaj ntsig, thiab lub sijhawm yog nyiaj.

Cov neeg tsim khoom tsis tsim cov haujlwm hauv docker ntim (Kuv yog ib tus kiv cua zoo li no, tiag tiag, kuv thov txim rau kuv tus kheej yav dhau los xD). Nyob rau hauv java nws muaj peev xwm muaj ob peb versions thiab hloov lawv nrog ib tug hais kom ua rau ib tug koj xav tau tam sim no. Nws yog tib yam hauv nodejs, muaj nvm.

xaus

Kuv ntseeg tias docker yog lub cuab yeej muaj zog thiab hloov tau yooj yim, qhov no yog nws qhov tsis zoo (suab txawv, yog). Nrog nws cov kev pab, cov tuam txhab tuaj yeem yooj yim tau txuas rau nws thiab siv nws qhov xav tau thiab tsis xav tau. Cov neeg tsim tawm tso lawv cov thawv, qee qhov ntawm lawv qhov chaw, tom qab ntawd nws txhua tus ntws mus rau hauv CI thiab ntau lawm. Pab pawg DevOps tab tom sau qee yam code los khiav cov thawv no.

Siv docker nkaus xwb rau tsis ntev los no theem hauv koj qhov kev ua haujlwm, tsis txhob rub nws mus rau qhov project thaum pib. Nws yuav tsis daws koj cov teeb meem kev lag luam. Nws tsuas yog txav cov teeb meem mus rau LEEJ TWG thiab muab nws cov kev daws teeb meem, koj yuav ua ob txoj haujlwm.

Thaum xav tau docker: Kuv tuaj txog qhov xaus tias docker yog qhov zoo heev ntawm kev ua kom zoo ntawm cov txheej txheem muab, tab sis tsis yog ntawm kev tsim cov haujlwm yooj yim

Yog tias koj tseem txiav txim siab siv docker, ces:

  • ceev faj heev
  • tsis txhob yuam cov neeg tsim khoom siv docker
  • localize nws siv nyob rau hauv ib qho chaw, tsis txhob kis nws thoob plaws tag nrho Dockefile thiab docker-compose repositories

PS:

Ua tsaug rau koj nyeem, Kuv xav kom koj cov kev txiav txim siab pob tshab hauv koj cov xwm txheej thiab cov hnub ua haujlwm tau zoo!

Tau qhov twg los: www.hab.com

Ntxiv ib saib