Welcome to nginx!


Download 54.67 Kb.
bet3/12
Sana18.01.2023
Hajmi54.67 Kb.
#1099190
1   2   3   4   5   6   7   8   9   ...   12
Bog'liq
13-labaratoriya

Docker tarixi buyrug'ini ishga tushirish orqali tasvirlash darajalarining to'liq to'plamini ko'rishingiz mumkin . Masalan: 

$ docker history mongo:latest


IMAGE CREATED CREATED BY ...
278372cb22b2 4 days ago /bin/sh -c #(nop) CMD ["mongod"]
341d04fd3d27 4 days ago /bin/sh -c #(nop) EXPOSE 27017/tcp
ebd34b5e9c37 4 days ago /bin/sh -c #(nop) ENTRYPOINT &{["/entrypoint.
f3b2b8cf226c 4 days ago /bin/sh -c #(nop) COPY file:ef2883b33ed7ba0cc
ba53e9f50f18 4 days ago /bin/sh -c #(nop) VOLUME [/data/db]
c537910de5cc 4 days ago /bin/sh -c mkdir -p /data/db && chown -R mong
f48ad436057a 4 days ago /bin/sh -c set -x
df59596772ab 4 days ago /bin/sh -c echo "deb http://repo.mongodb.org/
96de83c82d4b 4 days ago /bin/sh -c #(nop) ENV MONGO_VERSION=3.0.6
0dab801053d9 4 days ago /bin/sh -c #(nop) ENV MONGO_MAJOR=3.0
5e7b428dddf7 4 days ago /bin/sh -c apt-key adv --keyserver ha.pool.sk
e81ad85ddfce 4 days ago /bin/sh -c curl -o /usr/local/bin/gosu -SL "h
7328803ca452 4 days ago /bin/sh -c gpg --keyserver ha.pool.sks-keyser
ec5be38a3c65 4 days ago /bin/sh -c apt-get update
430e6598f55b 4 days ago /bin/sh -c groupadd -r mongodb && useradd -r
19de96c112fc 6 days ago /bin/sh -c #(nop) CMD ["/bin/bash"]
ba249489d0b6 6 days ago /bin/sh -c #(nop) ADD file:b908886c97e2b96665
Tuzilishi muvaffaqiyatsizlikka uchragan taqdirda, buzilishgacha bo'lgan darajani ishga tushirish juda foydali bo'lishi mumkin. 

FROM busybox:latest


RUN echo "This should work"
RUN /bin/bash -c echo "This won't"
va uni qurishga urinish:

$ docker build -t echotest .


Sending build context to Docker daemon 2.048 kB
Step 0 : FROM busybox:latest
---> 4986bf8c1536
Step 1 : RUN echo "This should work"
---> Running in f63045cc086b1
This should work
---> 85b49a851fcc2
Removing intermediate container f63045cc086b3
Step 2 : RUN /bin/bash -c echo "This won't"
---> Running in e4b31d0550cd
/bin/sh: /bin/bash: not found
The command '/bin/sh -c /bin/bash -c echo "This won't"' returned a non-zero
code: 127

Garchi bu holda muammo xato xabari bilan aniq ko'rinib tursa-da, biz ushbu ko'rsatmani disk raskadrovka qilish uchun oxirgi muvaffaqiyatli darajada yaratilgan tasvirni bajarishimiz mumkin. Shuni esda tutingki, biz bu erda oxirgi konteyner identifikatori (e4b31d0550cd) emas, balki oxirgi rasm identifikatoridan (85b49a851fcc) foydalanmoqdamiz: 


$ docker run -it 7831e2ca1809
/ # /bin/bash -c "echo hmm"
/bin/sh: /bin/bash: not found
/ # /bin/sh -c "echo ahh!"
ahh!
/ #

va muammo yanada aniqroq bo'ladi: bandbox rasmida buta qobig'i yo'q.
Keshlash
Docker shuningdek tasvirni tezlashtirish uchun har bir qatlamni keshlaydi . Ushbu turdagi keshlash samarali ish oqimlari uchun juda muhimdir, ammo u biroz sodda. Kesh ko'rsatmalar uchun ishlatiladi, agar:

  • Oldingi ko'rsatma AND keshida topilgan 

  • bir darajasi bordir ichida , aynan bir xil ta'lim va ota-ona darajasiga ega kesh (hatto ahamiyatsiz joylar keshni bekor qiladi)

Bundan tashqari, ADD va COPY ko'rsatmalarida, keshdagi fayllarning har biri uchun nazorat summasi yoki metadata o'zgartirilgan bo'lsa, kesh yaroqsiz bo'ladi.
Bu shuni anglatadiki, bir nechta qatllar paytida bir xil natijani kafolatlamaydigan RUN buyrug'i hali ham keshlanadi . Agar siz fayllarni yuklayotgan bo'lsangiz, apt-get yangilanishini ishlatayotgan bo'lsangiz yoki ombor manbasini klonlashtirayotgan bo'lsangiz, bu haqda ayniqsa ehtiyot bo'ling .
Agar siz keshlashni rad etishingiz kerak bo'lsa, docker build- ni - no-cache argumenti bilan ishga tushirishingiz mumkin . Keshni olib tashlamoqchi bo'lgan nuqtadan oldin siz ham bayonot qo'shishingiz yoki o'zgartirishingiz mumkin; va shu sababli quyidagi qatorlar bilan Dockerfile-ni ko'rishingiz mumkin:  

ENV UPDATED_ON "14:12 17 February 2015"


RUN git clone....
Asosiy rasmlar
O'zingizning rasmlaringizni yaratishda siz qaysi asosiy rasmdan boshlashni hal qilishingiz kerak bo'ladi. Tanlash uchun ko'plab variantlar mavjud va ularning har birining turli xil afzalliklari va kamchiliklarini tushunish uchun vaqt ajratishga arziydi.
O'zingizning rasmingizni yaratmaslik bu eng yaxshi tanlov - mavjud bo'lganidan foydalanishingiz va unga o'zingizning shaxsiy fayllaringizni va / yoki ma'lumotlaringizni o'rnatishingiz mumkin. Rasmiy rasmlar mavjud bo'lgan ma'lumotlar bazalari va veb-serverlar kabi keng tarqalgan dasturiy ta'minot uchun eng yaxshi tanlov bo'lishi mumkin. Umuman olganda, siz o'zingizning ishingizdan ko'ra rasmiy usuldan foydalansangiz yaxshi bo'ladi - siz boshqalarning ishidan foyda olasiz va konteynerda dasturiy ta'minotni qanday qilib yaxshiroq ishlashni aniqlaysiz. Agar rasmiy rasm sizga mos kelmasligi uchun aniq bir sabab bo'lsa, muammoni ota-ona loyihasida ochishni o'ylab ko'ring, chunki ehtimol boshqa odamlar ham shu kabi muammolarga duch kelishadi yoki bu muammoni hal qilishni bilishadi .
Agar sizga o'zingizning arizangizni joylashtirish uchun rasm kerak bo'lsa, avval siz foydalanadigan til yoki infratuzilmani qo'llab-quvvatlash uchun rasm rasmiy ravishda mavjudligini tekshirib ko'ring (masalan, Go yoki Ruby on Rails ). Ko'pincha, qurish uchun alohida tasvir foydalanishingiz mumkin va (masalan, sizning dasturiy ta'minot tarqatish, siz foydalanishingiz mumkin JDK tasvirni: Java bir qurish Java ariza , lekin keyin yana bir kamtarona yordamida natijasida JAR faylni tarqatish java: JRE tasvirni yo'qqa keraksiz qurilish vositalari). Xuddi shunday, ba'zi rasmiy rasmlarda (masalan, tugun ) ko'plab "ishlab chiqarish" vositalari va sarlavhalari olib tashlangan maxsus "ingichka" tuzilmalar mavjud.
Ba'zan, amalda, sizga Linuxning kichik, ammo to'liq tarqatilishi kerak . Men haqiqiy minimalizm amal ketyapman, men foydalanib turaman Alp tasvirni faqat hajmi 5MB ga, lekin hali ham paketlar va vositalar oson o'rnatish uchun katta paketi Manager bor. Agar menga to'liqroq rasm kerak bo'lsa, men odatda debian tasvirlaridan birini ishlataman , bu umumiy ubuntu rasmlaridan ancha kichik , lekin bir xil paketlarga kirish huquqiga ega. Agar sizning tashkilotingiz ma'lum bir Linux tarqatish bilan bog'liq bo'lsa , siz buning uchun Docker rasmini topishingiz kerak . Bu sizning tashkilotingiz qo'llab-quvvatlamaydigan yoki tajribasi bo'lmagan yangi tarqatishga o'tishdan ko'ra ko'proq ma'noga ega bo'lishi mumkin.
Ko'pincha, rasm hajmini iloji boricha kamaytirish haqida ortiqcha tashvishlanishning hojati yo'q. Agar siz allaqachon bir tasvir bor agar shunday bo'lsa, baza tasvirlar, turli tasvirlar bilan birgalikda, deb eslab 14.04: Ubuntu va olib markazi ( Hub butunlay, siz faqat kerakli o'zgarishlarni olib tashlash o'rniga, butun tasvir, unga asoslangan). Biroq, kichraytirilgan rasmlar, shubhasiz, tezkor tarqatish va oson tarqatishga muhtoj bo'lganimizda katta ortiqcha. 
Siz o'zingiz bilan o'ta minimallashtirilgan tasvirlarni olishingiz va ularni faqat ikkilik shaklda yuborishingiz mumkin. Buning uchun bajariladigan kodingizning oddiy nusxasi bilan maxsus ish joyi tasviridan (to'liq tozalangan fayl tizimi) meros qilib olgan Dockerfile yozing va tegishli CMD yo'riqnomasini o'rnating . Sizning bajariladigan kodingiz barcha kerakli kutubxonalarni o'z ichiga olishi kerak (dinamik aloqasiz) va tashqi buyruqlarni chaqira olmasligi kerak. Shuni ham yodda tutingki, ikkilik konteyner arxitekturasi uchun tuzilishi kerak, bu Docker mijozi ishlaydigan mashinaning arxitekturasidan farq qilishi mumkin . (Darhaqiqat, siz Docker va to'liq Linux yadrosini mikrokernel - unikernel yondashuvi foydasiga echish orqali ushbu minimal hisoblash tushunchasini yanada kuchaytirishingiz mumkin . Mikrokernel arxitekturasida ilova faqat dastur zarur bo'lgan funktsiyani o'z ichiga olgan yadro bilan birlashtirilib, keyin to'g'ridan-to'g'ri gipervizor tomonidan ishga tushiriladi. Bu sizga bir qator keraksiz kod qatlamlaridan va foydalanilmaydigan drayverlardan xalos bo'lishga imkon beradi, natijada dastur juda kichikroq va tezroq ishlaydi - mikrokernellar odatda bir necha soniya ichida yuklanadi, ya'ni foydalanuvchi so'rovlariga darhol javob sifatida ishga tushirilishi mumkin. (qarang Unikernels : Rise of Virtual Kutubxona operatsion tomonidan tizimi anil Madhavapeddy va David J. Scott va MirageOs .)  
Minimalist yondashuv juda jozibali bo'lishi mumkin bo'lsa-da, disk raskadrovka va texnik xizmat ko'rsatishda sizni qiyin ahvolga solishi mumkinligiga e'tibor bering - bandbox u bilan ishlash uchun juda ko'p vositaga ega bo'lmaydi va agar siz ishlayotgan rasmdan foydalansangiz ( chizish ) , sizda qobiq ham bo'lmaydi.
Dockerfile bo'yicha ko'rsatmalar
Ushbu bo'limda Dockerfile- da foydalanish uchun turli xil ko'rsatmalar qisqacha ko'rib chiqiladi . U ular hali o'zgarmoqda va tez tiklanadi mumkin, va qisman qisman, batafsil berilish emas , chunki har tomonlama va mavjud har doim zamonaviy hujjatlar bor Docker veb- . A Sharh Dockerfile bir # belgi bilan bir satr boshida tomonidan ta'kidlangan. 
Dockerfile- da quyidagi ko'rsatmalar mavjud:

ADD
Fayllarni yig'ilish kontekstidan yoki uzoqdagi URL manzilidan rasmga ko'chiradi. Agar arxiv fayllari mahalliy yo'ldan qo'shilsa, ular avtomatik ravishda paketdan chiqariladi. ADD bilan qamrab olingan funktsiyalar doirasi juda katta bo'lganligi sababli, odatda fayllar va kataloglarni qurish sharoitida nusxalash uchun oddiyroq COPY buyrug'ini va masofaviy resurslarni yuklab olish uchun curl yoki wget bilan RUN iboralarini afzal ko'rish yaxshiroq (yuklab olingan faylni o'sha bayonotda qayta ishlash va o'chirish imkoniyatini qoldiring ).



Download 54.67 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   12




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling