Welcome to nginx!
Download 54.67 Kb.
|
13-labaratoriya
- Bu sahifa navigatsiya:
- - boglaning KONTEYNERLARDA: ALIAS uchun Docker muddatda , KONTEYNERLARDA
- ALIAS
- REDIS_ENV bilan qoshiladi
- - icc = false va - iptables
- / Data
- - jild-dan KONTEYNERLARDA
- Postgres
-P 8000: 80 variant hikoya qilish Docker konteyner port 80 orziqib mezbon portiga 8000. Muqobil variant sifatida -P uchun foydalanish mumkin Xabarlar Docker kerak ustida avtomatik ravishda xost uchun yuborish uchun bepul ulanish nuqtasini tanlang. Masalan :
$ ID=$(docker run -d -P nginx) $ docker port $ID 80 0.0.0.0:32771 $ curl localhost:32771 ... ... -P buyrug'ining asosiy afzalligi shundaki, siz endi port ajratishlarini kuzatib borish uchun javobgar bo'lmaysiz, bu sizning konteynerlarni nashr qilish uchun turli xil portlaringiz bo'lsa muhim bo'ladi. Bunday hollarda Docker portini ajratishni tekshirish uchun docker port buyrug'idan foydalanishingiz mumkin . Konteynerlarni ulash Ulanish ( havola ) Docker - bitta va bitta xostda mumkin bo'lgan aloqa konteynerlarini yaratishning eng oddiy usuli. Docker tarmoq modeli bilan sukut bo'yicha konteynerlar orasidagi aloqa ichki Docker tarmoq muhiti orqali amalga oshiriladi, ya'ni aloqa sizning uy egangizning tarmoq muhitidan tashqariga chiqmaydi. Links hujjatingizni bildirib, boshlanadi - bog'laning KONTEYNERLARDA: ALIAS uchun Docker muddatda , KONTEYNERLARDA sizning bog'liq idish nomi (bu muhokama va bu kitob bo'ylab, men kabi bog'lovchi konteyner murojaat qiladi bog'laning idish va idish linkni boshladi asosiy konteyner sifatida - asosiy konteyner - chunki ikkinchisi havolani boshlash uchun javobgardir) va ALIAS - bu sizning konteyner havolangizga murojaat qilish uchun asosiy konteyner ichida ishlatiladigan mahalliy nom. Docker birikmalaridan foydalanish , shuningdek , bog'langan konteynerning taxallusini va identifikatorini sizning asosiy konteyneringizdagi / etc / hosts- ga qo'shadi va shu bilan bog'liq konteynerni asosiy konteynerdan nomiga murojaat qilishga imkon beradi. Bundan tashqari, Docker asosiy konteyner ichida tegishli konteyner bilan aloqani osonlashtirish uchun mo'ljallangan muhit o'zgaruvchilar guruhini o'rnatadi. Masalan, Redis konteyneriga havola yaratadigan bo'lsak: $ docker run -d --name myredis redis c9148dee046a6fefac48806cd8ec0ce85492b71f25e97aae9a1a75027b1c8423 $ docker run --link myredis:redis debian env ATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=f015d58d53b5 REDIS_PORT=tcp://172.17.0.22:6379 REDIS_PORT_6379_TCP=tcp://172.17.0.22:6379 REDIS_PORT_6379_TCP_ADDR=172.17.0.22 REDIS_PORT_6379_TCP_PORT=6379 REDIS_PORT_6379_TCP_PROTO=tcp REDIS_NAME=/distracted_rosalind/redis REDIS_ENV_REDIS_VERSION=3.0.3 REDIS_ENV_REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-3.0.3.tar.gz REDIS_ENV_REDIS_DOWNLOAD_SHA1=0e2d7707327986ae652df717059354b358b83358 HOME=/root Biz ko'rishingiz mumkin Docker ega bo'lgan majmui muhit o'zgaruvchilar REDIS_PORT prefiksi , bu idish bilan muloqot qilish uchun qanday ma'lumotlarni o'z ichiga olgan. Ularning aksariyati biroz ortiqcha ko'rinishga ega, chunki ularning qiymatlaridagi ma'lumotlar o'zgarmaydigan nomida joylashgan. Biroq, ular boshqa hech narsa bo'lmasa, hujjat shakli sifatida foydalidir. Docker shuningdek, tegishli konteynerdan atrof-muhit o'zgaruvchilarini import qiladi va ular REDIS_ENV bilan qo'shiladi . Ushbu funksiya juda foydali bo'lishi mumkin bo'lsa-da, API ma'lumoti yoki ma'lumotlar bazasi parollari kabi nozik ma'lumotlarni saqlash uchun o'zgaruvchilardan foydalansangiz, aynan shu narsa sodir bo'lishini yodda tutish kerak . Odatiy bo'lib, konteynerlar aniq bog'langan yoki bog'lanmaganligidan qat'i nazar, bir-biri bilan aloqa qilish imkoniyatiga ega bo'ladi. Agar siz bog'lanmagan konteynerlar orasidagi aloqadan qochmoqchi bo'lsangiz , Docker demonini ishga tushirishda - icc = false va - iptables parametrlaridan foydalaning . Endi konteyner bilan bog'liq, deb, Docker qiladi belgilangan Iptalles qoidalar idishlar e'lon qilingan barcha portlar haqida muloqot qilish imkonini berish uchun fosh . Afsuski, o'rnatilgandan so'ng, Docker havolalari bir qator kamchiliklarga ega. Ehtimol, eng muhimi, ular statikdir - konteynerlar qayta ishga tushirilgandan keyin ham havolalar davom etishi kerak, lekin bog'langan konteyner almashtirilsa, ular yangilanmaydi. Shuningdek, bog'langan konteyner asosiy konteynerdan oldin boshlanishi kerak, demak siz ikki tomonlama aloqa o'rnatolmaysiz. Jildlar va ma'lumotlar konteynerlarining ma'lumotlarini boshqarish Eslatib o'tamiz, Docker jildlari UFS konteyneriga kirmaydigan kataloglardir (texnik jihatdan kataloglar yoki fayllar, chunki jild alohida fayl bo'lishi mumkin) (ko'proq: " Tasvirlar, konteynerlar va UFS ") - ular shunchaki o'rnatilgan mahkamlangan kataloglardir ( bog'lash moslamasi sobit o'rnatilgan ) konteynerda. Jildlarni boshlashning uch xil usuli bor (yaxshi, ikki yarim, barchasi qanday hisoblanishingizga bog'liq) va bu usullar orasidagi farqni tushunish muhimdir. Birinchisi uchun -v bayrog'i yordamida ovoz balandligini ish vaqtida e'lon qilishimiz mumkin: $ docker run -it --name container-test -h CONTAINER -v /data debian /bin/bash root@CONTAINER:/# ls /data root@CONTAINER:/# Bu hajmdagi konteyner ichida / ma'lumotlar katalogini yaratadi . / Data katalogida joylashgan barcha fayllar jildga ko'chiriladi. Docker inspect - ni yangi qobiqdan ishga tushirib , sizning xostingizdagi ovozning o'rnini topamiz : $ docker inspect -f {{.Mounts}} container-test [{5cad... /mnt/sda1/var/lib/docker/volumes/5cad.../_data /data local true}] Bunday holda, konteynerdagi hajm / ma'lumotlar / faqat xost katalogiga havoladir / var / lib / docker / volumes / 5cad… / _ ma'lumotlar . Buni tekshirish uchun faylni xostimizdagi katalogga qo'shishimiz mumkin (agar siz uzoq Docker xizmatiga ulangan bo'lsangiz, SSH orqali ushbu buyruqni uzoq xostda bajarishingiz kerak bo'ladi. Agar Docker mashinasidan foydalansangiz - bu haqiqatan ham Docker-ni o'rnatgan bo'lsangiz ham shunday bo'ladi Docker Toolbox- dan foydalanib , buni docker-machine ssh default bilan qilishingiz mumkin ): $ sudo touch /var/lib/docker/volumes/5cad.../_data/test-file va darhol idishni ichidan ko'rishingiz kerak: $ root@CONTAINER:/# ls /data test-file Hajmini belgilash uchun ikkinchi yo'l foydalanish hisoblanadi VOLUME bayonot bilan Dockerfile : FROM debian:wheezy VOLUME /data Bu / home / adrian / ma'lumotlar katalogini ushbu xostga / ma'lumotlar sifatida sizning konteyneringizga o'rnatadi . / Home / adrian / data katalogida mavjud bo'lgan barcha narsalar ushbu konteynerda mavjud bo'ladi. Agar ushbu idishda / ma'lumotlar katalogi allaqachon mavjud bo'lsa, uning tarkibi ushbu jildda yashiringan bo'ladi. Boshqa qo'ng'iroqlardan farqli o'laroq, ushbu jildga ko'rib chiqilayotgan rasmdagi hech qanday fayl ko'chirilmaydi va Docker tomonidan ovoz o'chirilmaydi (ya'ni docker rm -v foydalanuvchi tanlagan katalogga o'rnatilgan hajmni o'chirmaydi). Ma'lumotlarni almashish Sintaksis -v HOST_ DIR: CONTAINER _DIR xost va bir yoki bir nechta konteyner o'rtasida fayllarni almashishda juda foydalidir. Masalan, konfiguratsiya fayllari xostda saqlanishi va umumiy rasmlardan konteynerga o'rnatilishi mumkin. Yordamida idishlar bo'ylab ham, biz Share Ma'lumotlarni - jild-dan KONTEYNERLARDA parametr bilan Docker muddatda . Masalan, avvalgi misolimizdagi konteynerdan sizning hajmlaringizga kirish huquqiga ega bo'lgan yangi konteyner yaratishimiz mumkin, shunga o'xshash narsa: $ docker run -it -h NEWCONTAINER --volumes-from container-test debian /bin/bash root@NEWCONTAINER:/# ls /data test-file root@NEWCONTAINER:/# Shuni ta'kidlash kerakki, bu konteynerda hozirda ishlaydigan hajmlar mavjud bo'lishidan qat'iy nazar ishlaydi (bu holda, konteyner-test ). Tovush bilan kamida bitta aloqa mavjud ekan, uni o'chirib bo'lmaydi. Ma'lumotlar konteynerlari Ma'lumotlar konteynerlarini yaratish - bu asosiy rol boshqa konteynerlarni almashish bo'lgan konteynerlarni yaratish . Ushbu yondashuvning asosiy afzalligi shundaki, u - Volume-from buyrug'i yordamida osongina yuklanishi mumkin bo'lgan jildlar uchun qulay nom maydonini saqlaydi . Masalan, biz quyidagi buyruq yordamida PostgerSQL ma'lumotlar bazasi uchun ma'lumotlar konteynerini yaratishimiz mumkin : $ docker run --name dbdata postgres echo "Data-only container for postgres" Bu bir konteyner yaratadi Postgres tasvir va ijro oldin bu tasvir belgilangan barcha hajmlari boshlang'ich echo buyrug'ini va Biz Biroq, bevosita shu yerda chiqadigan biron-bir buyruq foydalanishingiz mumkin (chiqmasdan echo Xabar ijro, bu idish maqsadida bir eslatma bo'lib xizmat qiladi Docker Zab - a . Yana bir variant - konteynerni umuman ishlatmaslik , docker run o'rniga docker create yordamida ). Ma'lumotlar konteynerlarini bajariladigan qilib qoldirishning hojati yo'q, chunki bu resurslarni behuda sarflashi mumkin. Keyin biz ushbu hajmni boshqa hajmdagi konteynerlardan - Volume -from parametri yordamida ishlatishimiz mumkin . Masalan : $ docker run -d --volumes-from dbdata --name db1 postgres Ajratish hajmi Jildlarni faqat quyidagi hollarda o'chirish mumkin: konteyner rm -v docker bilan olib tashlandi yoki Download 54.67 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling