Dockerni o'rganish, 6-qism: Ma'lumotlar bilan ishlash

Docker haqidagi bir qator materiallarni tarjima qilishning bugungi qismida biz ma'lumotlar bilan ishlash haqida gaplashamiz. Xususan, Docker jildlari haqida. Ushbu materiallarda biz doimo Docker dasturlash mexanizmlarini turli xil qutulish mumkin bo'lgan analoglar bilan taqqosladik. Bu erda biz bu an'anadan chetga chiqmaymiz. Docker-dagi ma'lumotlar ziravorlar bo'lsin. Dunyoda ko'plab ziravorlar mavjud va Docker ma'lumotlar bilan ishlashning ko'plab usullariga ega.

1-qism: Asoslar
2-qism: atamalar va tushunchalar
3-qism: Docker fayllari
4-qism: Tasvirlar hajmini kamaytirish va ularni yig'ishni tezlashtirish
5-qism: buyruqlar
6-qism: ma'lumotlar bilan ishlash

Dockerni o'rganish, 6-qism: Ma'lumotlar bilan ishlash

E'tibor bering, ushbu material Docker dvigatelining 18.09.1 ​​versiyasi va API versiyalari yordamida tayyorlangan 1.39.

Docker-da ma'lumotlar vaqtincha yoki doimiy ravishda saqlanishi mumkin. Vaqtinchalik ma'lumotlardan boshlaylik.

Vaqtinchalik ma'lumotlarni saqlash

Docker konteynerlarida vaqtinchalik ma'lumotlarni boshqarishning ikki yo'li mavjud.

Odatiy bo'lib, konteynerda ishlaydigan dastur tomonidan yaratilgan fayllar yoziladigan konteyner qatlamida saqlanadi. Ushbu mexanizm ishlashi uchun hech qanday maxsus sozlash kerak emas. Bu arzon va quvnoq bo'lib chiqadi. Ilova shunchaki ma'lumotlarni saqlashi va o'z ishini davom ettirishi kerak. Biroq, konteyner mavjud bo'lishni to'xtatgandan so'ng, bunday oddiy tarzda saqlangan ma'lumotlar ham yo'qoladi.

Docker-da vaqtinchalik fayllarni saqlash - bu standart vaqtinchalik ma'lumotlarni saqlash mexanizmi yordamida erishish mumkin bo'lganidan ko'ra yuqori darajadagi ishlashga muhtoj bo'lgan holatlar uchun mos keladigan yana bir yechim. Agar sizning ma'lumotlaringiz konteyner mavjud bo'lgan vaqtdan uzoqroq saqlanishi kerak bo'lmasa, siz tmpfs konteyneriga ulanishingiz mumkin - xost operativ xotirasidan foydalanadigan vaqtinchalik ma'lumotlar do'koni. Bu ma'lumotlarni yozish va o'qish operatsiyalarini bajarishni tezlashtiradi.

Ko'pincha konteyner mavjud bo'lmagandan keyin ham ma'lumotlarni saqlash kerak bo'ladi. Buning uchun bizga doimiy ma'lumotlarni saqlash mexanizmlari kerak.

Doimiy ma'lumotlarni saqlash

Ma'lumotlarning ishlash muddatini konteynerning ishlash muddatidan uzoqroq qilishning ikki yo'li mavjud. Buning bir usuli - bog'lash texnologiyasidan foydalanish. Ushbu yondashuv bilan siz, masalan, haqiqiy hayot papkasini konteynerga o'rnatishingiz mumkin. Docker-dan tashqaridagi jarayonlar ham shunday papkada saqlangan ma'lumotlar bilan ishlay oladi. Shunday qarash tmpfs o'rnatish va ulash texnologiyasi.

Dockerni o'rganish, 6-qism: Ma'lumotlar bilan ishlash
Tmpfs va bog'lovchi o'rnatishni o'rnatish

Bind mount texnologiyasidan foydalanishning kamchiliklari shundan iboratki, uni qo'llash ma'lumotlarni zahiralash, ma'lumotlarni ko'chirish, bir nechta konteynerlar o'rtasida ma'lumot almashishni murakkablashtiradi. Docker hajmlaridan ma'lumotlarni doimiy saqlash uchun foydalanish ancha yaxshi.

Docker jildlari

Hajm - bu xost mashinasida konteynerlardan tashqarida joylashgan fayl tizimi. Jildlar Docker tomonidan yaratiladi va boshqariladi. Docker jildlarining asosiy xususiyatlari:

  • Ular axborotni doimiy saqlash vositasidir.
  • Ular mustaqil va konteynerlardan ajratilgan.
  • Ular turli xil konteynerlar o'rtasida taqsimlanishi mumkin.
  • Ular sizga ma'lumotlarni samarali o'qish va yozishni tashkil qilish imkonini beradi.
  • Hajmlar masofaviy bulutli provayderning resurslariga joylashtirilishi mumkin.
  • Ular shifrlangan bo'lishi mumkin.
  • Ularga nom berish mumkin.
  • Konteyner hajmni ma'lumotlar bilan oldindan to'ldirishni tashkil qilishi mumkin.
  • Ular sinov uchun qulaydir.

Ko'rib turganingizdek, Docker jildlari ajoyib xususiyatlarga ega. Keling, ularni qanday yaratish haqida gapiraylik.

Jildlarni yaratish

Jildlar Docker yoki API so'rovlari yordamida yaratilishi mumkin.

Bu erda konteynerni ishga tushirishda hajm yaratish imkonini beruvchi Dockerfile ko'rsatmalari mavjud.

VOLUME /my_volume

Shunga o'xshash yo'riqnomadan foydalanganda, Docker konteynerni yaratgandan so'ng, belgilangan joyda allaqachon mavjud bo'lgan ma'lumotlarni o'z ichiga olgan hajmni yaratadi. E'tibor bering, agar siz Dockerfile yordamida jild yaratsangiz, bu sizni jildning o'rnatish nuqtasini belgilash zaruratidan xalos qilmaydi.

JSON formatidan foydalanib, Dockerfileda jildlarni ham yaratishingiz mumkin.

Bundan tashqari, konteyner ishlayotgan vaqtda buyruq qatori vositalari yordamida hajmlar yaratilishi mumkin.

Buyruqlar satridan jildlar bilan ishlash

▍Hajm yaratish

Quyidagi buyruq bilan mustaqil jild yaratishingiz mumkin:

docker volume create —-name my_volume

▍Jildlar haqida ma'lumot oling

Docker jildlari ro'yxatini ko'rish uchun quyidagi buyruqdan foydalaning:

docker volume ls

Siz ma'lum bir jildni quyidagicha o'rganishingiz mumkin:

docker volume inspect my_volume

▍Ovoz balandligini o'chirish

Siz shunday jildni o'chirishingiz mumkin:

docker volume rm my_volume

Konteynerlar tomonidan ishlatilmaydigan barcha hajmlarni olib tashlash uchun siz quyidagi buyruqqa murojaat qilishingiz mumkin:

docker volume prune

Jildlarni o'chirishdan oldin Docker sizdan ushbu operatsiyani tasdiqlashingizni so'raydi.

Agar jild konteyner bilan bog'langan bo'lsa, tegishli konteyner o'chirilmaguncha bu hajmni o'chirib bo'lmaydi. Shu bilan birga, konteyner olib tashlangan bo'lsa ham, Docker buni har doim ham tushunmaydi. Agar bu sodir bo'lsa, siz quyidagi buyruqdan foydalanishingiz mumkin:

docker system prune

U Docker resurslarini tozalash uchun mo'ljallangan. Ushbu buyruqni bajarganingizdan so'ng, holati avval noto'g'ri bo'lgan jildlarni o'chirishingiz kerak.

--mount va --volume bayroqlari

Jildlar bilan ishlash uchun, buyruqni chaqirganingizda docker, siz tez-tez bayroqlardan foydalanishingiz kerak bo'ladi. Masalan, konteyner yaratish jarayonida hajm yaratish uchun siz ushbu konstruktsiyadan foydalanishingiz mumkin:

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

Qadim zamonlarda (2017 yilgacha) bayroq mashhur edi --volume. Dastlab, bu bayroq (uni qisqartirilgan shaklda ham ishlatish mumkin, keyin u o'xshaydi -v) mustaqil konteynerlar va bayroq uchun ishlatilgan --mount - Docker Swarm muhitida. Biroq, Docker 17.06 holatiga ko'ra, bayroq --mount har qanday stsenariyda foydalanish mumkin.

Shuni ta'kidlash kerakki, bayroqdan foydalanganda --mount Buyruqda ko'rsatilishi kerak bo'lgan qo'shimcha ma'lumotlarning miqdori ortadi, lekin bir necha sabablarga ko'ra, ushbu bayroqni ishlatmaslik yaxshiroqdir. --volume. Bayroq --mount xizmatlar bilan ishlash yoki ovoz balandligi drayveri variantlarini belgilash imkonini beruvchi yagona mexanizmdir. Bundan tashqari, bu bayroq bilan ishlash osonroq.

Docker ma'lumotlarini boshqarish buyruqlarining mavjud misollarida siz bayroqdan foydalanishning ko'plab misollarini ko'rishingiz mumkin. -v. Ushbu buyruqlarni o'zingiz uchun moslashtirishga harakat qilayotganda, bayroqlar ekanligini unutmang --mount и --volume turli parametr formatlaridan foydalaning. Ya'ni, siz shunchaki almashtira olmaysiz -v haqida --mount va ishchi guruhni oling.

O'rtasidagi asosiy farq --mount и --volume bu bayroqdan foydalanganda --volume barcha parametrlar bir maydonda va foydalanilganda birga yig'iladi --mount parametrlari ajratiladi.

Bilan ishlaganda --mount parametrlar kalit-qiymat juftliklari sifatida ifodalanadi, ya'ni u o'xshaydi key=value. Bu juftliklar vergul bilan ajratiladi. Bu erda tez-tez ishlatiladigan variantlar mavjud --mount:

  • type - o'rnatish turi. Tegishli kalit uchun qiymat bo'lishi mumkin bog'lang, ovoz yoki tmpfs. Bu erda biz hajmlar haqida gapiramiz, ya'ni biz qiymatga qiziqamiz volume.
  • source - o'rnatish manbai. Nomlangan jildlar uchun bu jildning nomi. Nomsiz jildlar uchun bu kalit belgilanmagan. ga qisqartirilishi mumkin src.
  • destination - fayl yoki papka konteynerga o'rnatilgan yo'l. Ushbu kalitni qisqartirish mumkin dst yoki target.
  • readonly - mo'ljallangan hajmni o'rnatadi faqat o'qish uchun. Ushbu kalitdan foydalanish ixtiyoriy va unga hech qanday qiymat belgilanmagan.

Bu erda foydalanishga misol --mount ko'p variantlar bilan:

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

natijalar

Docker jildlari bilan ishlashda foydalanishingiz mumkin bo'lgan ba'zi foydali buyruqlar:

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

Bu erda tez-tez ishlatiladigan variantlar ro'yxati --mount, shakl buyrug'ida qo'llaniladi docker run --mount my_options my_image:

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

Endi biz ushbu Docker seriyasini tugatganimizdan so'ng, Docker o'quvchilari keyingi qayerga borishlari haqida bir necha so'z aytish vaqti keldi. shu yerda Docker haqida ajoyib maqola. shu yerda Docker haqidagi kitob (ushbu kitobni sotib olayotganda uning eng so'nggi nashrini olishga harakat qiling). shu yerda Amaliyotni texnologiyani o'rganishning eng yaxshi usuli deb hisoblaydiganlar uchun yana bir kitob.

Hurmatli o'quvchilar! Yangi boshlanuvchilarga qanday Docker materiallarini o'rganishni tavsiya qilasiz?

Dockerni o'rganish, 6-qism: Ma'lumotlar bilan ishlash

Manba: www.habr.com

a Izoh qo'shish