Learning Docker, bahagi 6: nagtatrabaho sa data

Sa bahagi ngayon ng pagsasalin ng isang serye ng mga materyales tungkol sa Docker, pag-uusapan natin ang tungkol sa pagtatrabaho sa data. Sa partikular, tungkol sa mga volume ng Docker. Sa mga materyal na ito, palagi naming inihambing ang mga Docker software engine na may iba't ibang nakakain na pagkakatulad. Huwag din tayong lumihis sa tradisyong ito dito. Hayaan ang data sa Docker na maging pampalasa. Mayroong maraming mga uri ng pampalasa sa mundo, at sa Docker mayroong maraming mga paraan upang gumana sa data.

β†’ Bahagi 1: Mga Pangunahing Kaalaman
β†’ Bahagi 2: Mga Tuntunin at Konsepto
β†’ Bahagi 3: Dockerfiles
β†’ Bahagi 4: Pagbabawas ng mga laki ng larawan at pagpapabilis ng kanilang pagbuo
β†’ Bahagi 5: mga utos
β†’ Bahagi 6: nagtatrabaho sa data

Learning Docker, bahagi 6: nagtatrabaho sa data

Pakitandaan na ang materyal na ito ay inihanda gamit ang bersyon ng Docker engine 18.09.1 ​​​​at bersyon ng API 1.39.

Ang data sa Docker ay maaaring maimbak pansamantala o permanente. Magsimula tayo sa data ng oras.

Pansamantalang imbakan ng data

Sa mga container ng Docker, maaari mong ayusin ang trabaho gamit ang pansamantalang data sa dalawang paraan.

Bilang default, ang mga file na ginawa ng isang application na tumatakbo sa isang container ay iniimbak sa nasusulat na layer ng container. Upang gumana ang mekanismong ito, walang espesyal na kailangang i-configure. Ito ay lumiliko na mura at masayahin. Kailangan lang ng application na i-save ang data at magpatuloy sa paggawa ng sarili nitong bagay. Gayunpaman, pagkatapos na tumigil ang lalagyan, ang data na na-save sa simpleng paraan na ito ay mawawala din.

May isa pang solusyon para sa pag-iimbak ng mga pansamantalang file sa Docker, na angkop para sa mga kaso kung saan kailangan mo ng mas mataas na antas ng pagganap kumpara sa kung ano ang makakamit sa karaniwang mekanismo ng pansamantalang imbakan. Kung hindi mo kailangang maimbak ang iyong data nang mas matagal kaysa sa umiiral na lalagyan, maaari mong ikonekta ang mga tmpfs sa lalagyan - isang pansamantalang imbakan ng impormasyon na gumagamit ng RAM ng host. Ito ay magpapabilis sa pagsulat ng data at pagbabasa ng mga operasyon.

Madalas na nangyayari na ang data ay kailangang maimbak kahit na matapos na ang lalagyan ay hindi na umiral. Para sa layuning ito, kakailanganin namin ng mga mekanismo para sa patuloy na pag-iimbak ng data.

Permanenteng imbakan ng data

Mayroong dalawang paraan upang gawing mas mahaba ang buhay ng data kaysa sa buhay ng container. Ang isang paraan ay ang paggamit ng teknolohiya ng bind mount. Sa diskarteng ito, maaari mong i-mount, halimbawa, ang isang totoong-buhay na folder sa lalagyan. Ang mga prosesong matatagpuan sa labas ng Docker ay makakapagtrabaho din sa data na nakaimbak sa naturang folder. Narito kung paano tingnan mo tmpfs mounting at bind mount technology.

Learning Docker, bahagi 6: nagtatrabaho sa data
I-mount ang tmpfs at itali ang mount

Ang mga kawalan ng paggamit ng teknolohiya ng bind mount ay ang paggamit nito ay nagpapalubha sa pag-backup ng data, paglilipat ng data, at pagbabahagi ng data sa maraming lalagyan. Mas mainam na gumamit ng mga volume ng Docker para sa patuloy na pag-iimbak ng data.

Dami ng docker

Ang volume ay isang file system na naninirahan sa isang host machine sa labas ng mga container. Gumagawa at namamahala ang Docker ng mga volume. Narito ang mga pangunahing katangian ng mga volume ng Docker:

  • Ang mga ito ay isang paraan para sa permanenteng pag-iimbak ng impormasyon.
  • Ang mga ito ay independyente at nakahiwalay sa mga lalagyan.
  • Maaari silang ibahagi sa pagitan ng iba't ibang lalagyan.
  • Pinapayagan ka nitong ayusin ang mahusay na pagbabasa at pagsulat ng data.
  • Maaaring i-host ang mga volume sa mga mapagkukunan ng isang malayong cloud provider.
  • Maaari silang mai-encrypt.
  • Maaari silang bigyan ng mga pangalan.
  • Maaaring ayusin ng container ang volume na mapunan ng data nang maaga.
  • Ang mga ito ay maginhawa para sa pagsubok.

Tulad ng nakikita mo, ang mga volume ng Docker ay may ilang magagandang katangian. Pag-usapan natin kung paano likhain ang mga ito.

Paglikha ng mga Volume

Maaaring malikha ang mga volume gamit ang Docker o gamit ang mga kahilingan sa API.

Narito ang isang pagtuturo ng Dockerfile na nagbibigay-daan sa iyong lumikha ng volume kapag nagsimula ang lalagyan.

VOLUME /my_volume

Kapag gumagamit ng tagubiling tulad nito, ang Docker, pagkatapos gawin ang container, ay gagawa ng volume na naglalaman ng data na mayroon na sa tinukoy na lokasyon. Pakitandaan na kung gagawa ka ng volume gamit ang Dockerfile, hindi ka nito mapapawi sa pangangailangang tumukoy ng mount point para sa volume.

Maaari ka ring gumawa ng mga volume sa isang Dockerfile gamit ang JSON na format.

Bilang karagdagan, ang mga volume ay maaaring gawin gamit ang command line habang tumatakbo ang lalagyan.

Paggawa gamit ang mga volume mula sa command line

▍Paggawa ng volume

Maaari kang lumikha ng isang stand-alone na volume gamit ang sumusunod na command:

docker volume create β€”-name my_volume

▍Alamin ang impormasyon tungkol sa mga volume

Upang tingnan ang isang listahan ng mga volume ng Docker, gamitin ang sumusunod na command:

docker volume ls

Maaari mong galugarin ang isang partikular na volume tulad nito:

docker volume inspect my_volume

▍Pagtanggal ng volume

Maaari mong tanggalin ang isang volume na tulad nito:

docker volume rm my_volume

Upang matanggal ang lahat ng volume na hindi ginagamit ng mga lalagyan, maaari mong gamitin ang sumusunod na command:

docker volume prune

Bago tanggalin ang mga volume, hihilingin sa iyo ng Docker na kumpirmahin ang operasyong ito.

Kung ang isang volume ay nauugnay sa isang lalagyan, ang volume ay hindi matatanggal hanggang sa ang katumbas na lalagyan ay matanggal. Kasabay nito, kahit na natanggal ang lalagyan, hindi ito palaging naiintindihan ng Docker. Kung nangyari ito, maaari mong gamitin ang sumusunod na command:

docker system prune

Ito ay dinisenyo upang linisin ang mga mapagkukunan ng Docker. Pagkatapos patakbuhin ang utos na ito, dapat mong tanggalin ang mga volume na ang katayuan ay dating natukoy nang hindi tama.

--mount at --volume na mga flag

Upang gumana sa mga volume mo, kapag tumatawag sa command docker, madalas mong kailangang gumamit ng mga flag. Halimbawa, para makagawa ng volume habang gumagawa ng container, maaari mong gamitin ang sumusunod na construct:

docker container run --mount source=my_volume, target=/container/path/for/volume my_image

Noong sinaunang panahon (hanggang 2017), sikat ang watawat --volume. Sa una, ang watawat na ito (maaari rin itong gamitin sa pinaikling anyo, pagkatapos ay parang -v) ay ginamit para sa mga stand-alone na lalagyan, at ang bandila --mount - sa kapaligiran ng Docker Swarm. Gayunpaman, sa Docker 17.06, ang bandila --mount maaaring gamitin sa anumang senaryo.

Dapat tandaan na kapag gumagamit ng bandila --mount tumataas ang dami ng karagdagang data na kailangang tukuyin sa command, ngunit, sa ilang kadahilanan, mas mainam na gamitin ang flag na ito kaysa --volume. Bandila --mount - Ito ang tanging mekanismo na nagbibigay-daan sa iyo upang gumana sa mga serbisyo o tukuyin ang mga parameter ng driver ng volume. Bilang karagdagan, ang bandila na ito ay mas madaling gamitin.

Sa umiiral na mga halimbawa ng mga utos na naglalayong magtrabaho kasama ang data sa Docker, mahahanap mo ang maraming halimbawa ng paggamit ng bandila -v. Kapag sinusubukang iakma ang mga utos na ito para sa iyong sarili, tandaan na ang mga flag --mount ΠΈ --volume gumamit ng iba't ibang mga format ng parameter. Ibig sabihin, hindi mo basta-basta palitan -v sa --mount at kumuha ng working team.

Ang pangunahing pagkakaiba sa pagitan ng --mount ΠΈ --volume ay iyon kapag gumagamit ng bandila --volume lahat ng mga parameter ay pinagsama-sama sa isang field, at kapag ginamit --mount ang mga parameter ay pinaghiwalay.

Kapag nagtatrabaho kasama --mount ang mga parameter ay kinakatawan bilang mga pares ng key-value, ibig sabihin, mukhang key=value. Ang mga pares na ito ay pinaghihiwalay ng mga kuwit. Narito ang mga karaniwang ginagamit na opsyon --mount:

  • type - uri ng pag-mount. Ang halaga para sa kaukulang key ay maaaring magtali, dami o tmpfs. Pinag-uusapan natin ang tungkol sa mga volume dito, iyon ay, interesado tayo sa kahulugan volume.
  • source β€” pinagmulan ng bundok. Para sa mga pinangalanang volume, ito ang pangalan ng volume. Para sa mga hindi pinangalanang volume ang key na ito ay hindi tinukoy. Maaari itong paikliin sa src.
  • destination β€” ang landas kung saan naka-mount ang file o folder sa lalagyan. Ang susi na ito ay maaaring paikliin sa dst o target.
  • readonly - ini-mount ang volume na nilayon para lamang sa pagbabasa. Opsyonal ang key na ito at walang value na nakatalaga dito.

Narito ang isang halimbawa ng paggamit --mount na may maraming mga parameter:

docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image

Mga resulta ng

Narito ang ilang kapaki-pakinabang na utos na magagamit mo kapag nagtatrabaho sa mga volume ng Docker:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Narito ang isang listahan ng mga karaniwang ginagamit na parameter para sa --mount, naaangkop sa isang command tulad ng docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=/path/in/container
  • readonly

Ngayong natapos na natin ang seryeng Docker na ito, oras na para magsabi ng ilang salita tungkol sa kung saan susunod na pupuntahan ang mga mag-aaral ng Docker. Dito magandang magandang artikulo tungkol sa Docker. Dito isang libro tungkol sa Docker (kapag binili ang aklat na ito, subukang makuha ang pinakabagong edisyon). Dito Isa pang libro na angkop para sa mga naniniwala na ang pagsasanay ay ang pinakamahusay na paraan upang matuto ng teknolohiya.

Minamahal na mambabasa! Anong mga materyales tungkol sa Docker ang irerekomenda mo para matutunan ng mga baguhan?

Learning Docker, bahagi 6: nagtatrabaho sa data

Pinagmulan: www.habr.com

Magdagdag ng komento