Докер дээр суурилсан жишээ шийдэл. Докерийг ойлгох. Docker-ийн ашигладаг нэрийн орон зайн жишээ


Docker бол хамгийн түгээмэл контейнержуулалтын систем бөгөөд үүнийг дотоод систем дээрээ суулгахгүйгээр контейнерт хөгжүүлэхэд шаардлагатай програм хангамжийг ажиллуулах боломжийг олгодог. Энэ материалд бид Docker контейнерийн менежментэд дүн шинжилгээ хийх болно.

Docker нь хэд хэдэн бүрэлдэхүүн хэсгээс бүрдэнэ.
  1. Зураг- албан ёсны вэбсайтаас татаж авсан хөгжүүлэгчдийн тохируулсан програм хангамжийн багц
  2. Контейнер— зургийн хэрэгжилт — сервер дээрх объект нь үүнээс үүсгэгдсэн бөгөөд контейнер нь яг хуулбар байх албагүй бөгөөд Dockerfile ашиглан тохируулах боломжтой.
  3. Эзлэхүүн— диск дээрх контейнер ашигладаг, өгөгдөл хадгалагддаг хэсэг. Савыг устгасны дараа ямар ч програм хангамж үлдэхгүй, гэхдээ өгөгдлийг ирээдүйд ашиглах боломжтой

Сүлжээ нь бүх бүтэц дээр тусгай аргаар баригдсан бөгөөд энэ нь портуудыг хүссэн хэлбэрээр дамжуулах, виртуал гүүрээр дамжуулан чингэлэгийг гаднаас нь (анхдагчаар энэ нь локал IP хаяг дээр ажилладаг) хүртээмжтэй болгох боломжийг олгодог. Энэ тохиолдолд контейнер нь дэлхийн болон нэг хаягаар хоёуланд нь хүрч болно.

Docker контейнерийн менежмент: үндсэн шинж чанарууд

Docker-ийг зааврын дагуу суулгаагүй бол Ubuntu эсвэл Debian сервер дээр суулгацгаая. Sudo-ээр дамжуулан давуу эрхгүй хэрэглэгчээр тушаалуудыг ажиллуулах нь дээр

Хамгийн энгийн савыг ажиллуулах нь бүх зүйл ажиллаж байгааг харуулах болно

Контейнер удирдах үндсэн командууд

Та бүх идэвхтэй савыг дараах байдлаар харуулах боломжтой:

-a шилжүүлэгчийн тусламжтайгаар идэвхгүй савыг оруулаад бүх савнууд харагдах болно

Дикер саванд санамсаргүй байдлаар нэр өгдөг бөгөөд хэрэв шаардлагатай бол та нэрийг нь шууд зааж өгч болно

docker run --Сайн уу-дэлхий гэж нэрлэ

Бид ubuntu зураг дээр үндэслэн my-linux-container нэртэй контейнер ажиллуулж, bash shell ашиглан контейнерийн консол руу очно.

docker run -it -my-linux-контейнер ubuntu bash гэж нэрлэнэ үү

Контейнерээс гарч, хост систем рүү буцахын тулд та гүйцэтгэх хэрэгтэй

Контейнер үүсгэгдсэн бүх зургийг hub.docker.com сайтаас анх үүсгэх үед автоматаар татаж авдаг; дотоодод аль хэдийн байгаа зургуудыг докерын зургуудыг ажиллуулснаар харж болно.

Татаж авсан зургаас контейнер үүсгэх нь илүү хурдан байх болно (бараг тэр даруй)

Савыг гарцтай орхих үед энэ нь зогсох тул ийм зүйл тохиолдохгүй тул та гарын товчлолыг ашиглан гарч болно. CTRL + A + P

Та идэвхгүй байгаа бүх савыг устгаж болно

docker rm $(докер ps -a -f байдал=гарсан -q)

Эсвэл тэдгээрийг нэг нэгээр нь устга

Сүүлийн командын танигчийн оронд та нэрийг зааж өгч болно

Докер дээр контейнеруудыг цөөн тооны ойлгомжтой командуудыг ашиглан удирддаг:

докерын контейнер эхлэх ID

докерын контейнер зогсоох ID

docker контейнер дахин эхлүүлэх ID

докерын чингэлэг шалгах ID

Сүүлийнх нь ялангуяа ашигтай бөгөөд энэ нь контейнер, тохиргооны файлууд болон ашигласан дискний хуваалтуудын талаархи бүх мэдээллийг харуулдаг. Тушаалуудын жагсаалтыг бүхэлд нь тусламж эсвэл Docker-ийн албан ёсны вэбсайтаас хялбархан олж болно

Өөрийн Docker дүрсийг үүсгэж, Dockerfile ашиглана

Зургууд нь ихэвчлэн Dockerfile-д заасан нэмэлт сонголтуудыг ашиглан одоо байгаа зургуудаас бүтээгддэг

Ubuntu-аас
CMD-ийн цуурай "Сайн уу ертөнц"

Одоо стандарт зураг дээр үндэслэн шинэ дүр төрхийг бий болгож байна ubuntu

Бид дүрсийг нэр өгөх замаар бүтээдэг (тушаалын төгсгөлд байгаа цэг нь одоогийн лавлах, улмаар Dockerfile-г ашиглаж байна гэсэн үг)

docker build -t my-ubuntu .

докерын зургуудОдоо шинээр үүсгэсэн my-ubuntu дүрсийг бас харуулах болно

Та үүнийг ажиллуулж болох бөгөөд энэ нь консол дээр харагдах болно: сайн уу ертөнц бөгөөд энэ нь анхдагч зургаас цорын ганц ялгаа юм

Бидэнд ихэвчлэн илүү төвөгтэй дүрмүүд хэрэгтэй байдаг, жишээ нь бид зураг дээр python3-г оруулах хэрэгтэй - шинэ лавлах руу очиж Dockerfile үүсгэцгээе.

Ubuntu-аас
CMD apt-get update && apt-get суулгах python3

Бүх зааврыг нэг мөрөнд бичсэн болно

docker build -t my-ubuntu-with-python3 .

Бид дотогшоо орох замаар савыг ажиллуулна

docker run -it my-ubuntu-with-python3 bash

Дотор нь root хувьд та гүйх хэрэгтэй dpkg -l | grep python3, тушаал нь багц системд байгааг харуулах бөгөөд энэ нь амжилт гэсэн үг юм

Үнэн хэрэгтээ Docker бол аливаа томоохон төслийн хөгжүүлэгч, администраторын хувьд зайлшгүй шаардлагатай хэрэгсэл юм. Хэдийгээр тийм биш байсан ч та Docker-ийг мэдэх хэрэгтэй: ойрын ирээдүйд энэ нь ширээний Linux түгээлтээс эхлээд AWS дээрх серверүүдийн сан хүртэл хаа сайгүй байх болно. Хамгийн сайн тал нь Docker-ийн үйл ажиллагааны зарчмыг зөв ойлгосон тохиолдолд ойлгоход хялбар байдаг.

Виртуал орчны ертөнцөд Apt-get

Docker нь нэрийн орон зай, бүлгүүдийн технологи дээр суурилдаг (эхнийх нь тусгаарлалтыг хангадаг, хоёр дахь нь процессын бүлэглэл, нөөцийн хязгаарлалтыг хангадаг) тул виртуалчлалын хувьд бидний дассан LXC/OpenVZ-ээс тийм ч их ялгаатай биш бөгөөд тийм ч их зүйл байхгүй. энд ярих. Линукс цөмийн механизм дээр суурилсан ижил хурд, тусгаарлах аргууд. Гэсэн хэдий ч илүү өндөр түвшинд, огт өөр түүх эхэлдэг. Docker-ийн онцлох зүйл бол энэ нь танд бүрэн хэмжээний виртуал орчинг байрлуулж, жишээлбэл вэб серверийг дахин эхлүүлэхтэй адил програм ажиллуулах боломжийг олгодог.

Тодорхой хуваарилалтын нарийн ширийн зүйлсээс хийсвэрлэн авч үзье, бидэнд цэвэр CentOS байгаа бөгөөд бид үндсэн системд нэвтрэхгүйгээр бүрэн виртуал орчинд тодорхой командыг ажиллуулахыг хүсч байна гэж төсөөлөөд үз дээ. Та түгээлтийн зургуудыг татаж аваад системд байршуулж, виртуал орчинг тохируулах шаардлагатай юу? Огт тийм биш, таны хийх ёстой зүйл бол хоёр тушаалыг ажиллуулах явдал юм:

$ sudo yum install docker-io $ sudo docker run -t ubuntu: сүүлийн /usr/bin/top

Тэгээд бүгдээрээ. Бид хамгийн сүүлийн үеийн Ubuntu хувилбар дээр суурилсан орчинтой контейнер доторх дээд хэрэгслийг дөнгөж сая эхлүүлж, одоогийн терминал руу мэдээлэл гаргаж байна. Энэ бүгдийг нэг энгийн тушаалаар (суулгалтыг тооцохгүй). Муу биш, тийм үү? Ерөнхийдөө бид энэ саванд "орож", шинээр суулгасан системээр ихэвчлэн хийдэг бүх зүйлийг хийх боломжтой.

$ sudo docker run -t -i ubuntu:хамгийн сүүлийн үеийн /bin/bash # apt-get update # apt-get install nginx #

Таны харж байгаагаар сүлжээнд бүх зүйл хэвийн байгаа тул бид системийг шинэчлэх, ямар ч програм суулгах, тохируулах боломжтой. Энэ нь бага зэрэг ид шид мэт харагддаг ч үнэндээ маш энгийн. Docker бол контейнерийн ертөнцөд нэг төрлийн apt-get юм, гэхдээ багцын оронд файлын системийн дүрс, албан ёсны Debian/Ubuntu репозиторын оронд Docker Hub нэртэй үүл хадгалах газар байдаг.

Бид "docker run..."-ыг гүйцэтгэх үед систем дараах зүйлсийг хийсэн:

  1. Докерын хэрэгсэл нь манай локал машин дээрх dockerd дэмонтой холбогдож, биднээс мэндчилж, Ubuntu-н хамгийн сүүлийн хувилбарыг (үүнийг командын хамгийн сүүлийн шошгон дээр тэмдэглэсэн) тусгаарлагдсан саванд ажиллуулахыг хүссэн.
  2. Dockerd дэмон тэмдэглэлийн дэвтэрээ шалгаад /var/lib/docker лавлах руу ороод манай машин дээр хамгийн сүүлийн үеийн Ubuntu-н файлын системийн дүрс байхгүй байгааг мэдсэн тул Docker Hub-тай холбогдож ийм зураг байгаа эсэхийг мэдэхээр шийдэв. Тэнд.
  3. Docker Hub-тай ярилцсаны дараа тэр зураг хэвээр байгаа гэдэгт итгэлтэй байж, бидэн рүү илгээхийг хүссэн.
  4. Хүссэн зургийг хүлээн авсны дараа dockerd файлын системээ холбож, chroot хийж, сүүлчийн аргумент дээр заасан тушаалыг ажиллуулж, нэрийн орон зайг ашиглан "хамрах хүрээг" хязгаарласан (үндсэндээ үндсэн FS, хост системийн процессууд, IPC, гэх мэт, хамгаалагдсан хязгаарлагдмал орчинд түгжигдсэн боловч одоогийн терминалын төхөөрөмжийн файлуудыг (-t туг) руу шилжүүлсэн бөгөөд ингэснээр бидний дээд хэсэг псевдо график интерфэйсийг зурах боломжтой болно.

Энэ загварын онцлох зүйл бол Docker Hub нь хүн бүрт нээлттэй бөгөөд хэн ч өөрийн дүр төрхийг бэлтгэж (энэ талаар дараа нь) өөр машин болон/эсвэл өөр хүн суулгахаар нийтлэх боломжтой юм. Бичиж байх үед Docker Hub дээр "нүцгэн" түгээлтийн зургуудаас эхлээд минималист Линукс орчинд ажилладаг, урьдчилан тохируулсан сервер болон ширээний программуудтай зураг хүртэл бүх тохиолдлуудад 45 мянга гаруй зураг нийтлэгдсэн.

Хэрэв бид Firefox-г виртуал орчинд ажиллуулахыг хүсвэл яах вэ? Үүнээс илүү хялбар зүйл байхгүй, хөтөч дээр Docker Hub-г нээгээд Browse & Search дээр дараад firefox гэж бичнэ үү. Үр дүнгийн жагсаалт дэлгэц дээр гарч ирнэ. Харцгаая, kennethkl/firefox маш тохиромжтой юм шиг байна. Бид үүн дээр товшоод бүх зүйлийг хэрхэн эхлүүлэх тухай мэдээллийг харна уу. Зохиогч бидэнд дараах тушаалыг ажиллуулахыг хэлдэг:

$ sudo docker run -d --name firefox -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix kennethkl/firefox

Оролдоод үзье. Тиймээ, зургийг богино хугацаанд татаж авсны дараа бид дэлгэцэн дээр стандарт Firefox-г авах болно. Үүнтэй ижил жишээг ашигласнаар та docker run командын өөр дөрвөн ашигтай сонголттой танилцаж болно.

  • -d - контейнерийг "демончилдог", өөрөөр хэлбэл энэ нь Docker-ийг виртуал орчны STDOUT-ээс салгаж, түүнийг далд ажиллуулах боломжийг олгодог;
  • --name - танигчийн оронд хүлээн авах савны нэр;
  • -e - орчны хувьсагчийг виртуал машин руу "дамжуулах" боломжийг танд олгоно;
  • -v - заасан файл эсвэл лавлахыг дамжуулдаг (хэрэв зам таарч байвал формат /file/on/host/system:/file/in/virtual эсвэл энгийнээр /file/on/host/system).

Энэ тохиолдолд хувьсагч болон файл шаардлагатай бөгөөд ингэснээр Firefox нь дотоод машины дэлгэц рүү нэвтрэх боломжтой болно. Энэ нь маш аюултай, учир нь саванд байгаа аливаа процесс нь таны ширээний компьютер дээр ямар ч програм хангамжийг ажиллуулахаас гадна, жишээ нь, товчлуур дарах эсвэл курсорын хөдөлгөөнийг таслан зогсоох боломжтой болно. Гэхдээ энэ нь жишээ болгох болно.

Docker хайлтын командыг ашиглан Docker зургуудыг хайх хялбар арга бий:

$ sudo docker хайлтын nginx

МЭДЭЭЛЭЛ

Аливаа Docker хэрэглэгч өөрийн хувийн Hub ажиллуулж болно. Үүнийг "бүртгэл" гэж нэрлэдэг бөгөөд бэлэн зураг хэлбэрээр авах боломжтой. Таны хийх ёстой зүйл бол зүгээр л үүнийг ажиллуулах явдал юм: docker run -p 5555:5555 бүртгэл.

Docker дэмонд зөвхөн үйлчлүүлэгч ашиглахаас гадна RESTful API ашиглан дотоод болон алсын машинаас хандах боломжтой. Стандарт Docker портууд нь tcp/2375 ба tcp/2376 юм.

Docker дүрсийг татаж авсны дараа шууд эхлүүлэх шаардлагагүй, та эхлээд docker pull командыг ашиглан дотоод машиндаа татаж аваад дараа нь: docker pull ubuntu-г ажиллуулж болно.

Давхардсан бялуу

Docker нь виртуал орчинтой ажиллахад аль болох тохь тухтай байх боломжийг олгож, орчинг байрлуулах үйл явцыг хоёуланг нь хялбаршуулж, тэдгээрийн хост системтэй харилцах харилцааг тохируулах боломжийг олгодог (энэ нь зөвхөн сүүлийн жишээ юм). Гэхдээ энэ нь түүний цорын ганц онцлох зүйл биш юм.

Хэрэв та эхний хоёр жишээн дээрх Ubuntu дүрсийг аль хэдийн тоглосон бол контейнерийн шинэ эхлэл бүр "эхнээс нь" гарч ирдэг бөгөөд сүүлийн сессэд хийсэн бүх өөрчлөлтүүд алга болсныг анзаарсан байх. Энэ бол ямар ч алдаа биш бөгөөд энэ нь Docker архитектурын гол шинж чанаруудын нэг бөгөөд үүнийг илүү сонирхолтой, сэтгэл татам шийдэл болгодог.

Баримт нь ихэнх тохиолдолд "Docker image" нь цул файлын системийн дүрс биш бөгөөд үүний үндсэн дээр контейнер үүссэн хэд хэдэн файлын системийн зургуудаас бүрдсэн давхаргын бялуу юм. Үүний зэрэгцээ, тусдаа FS зургууд нь лавлах бүтцийн зарим хэсгийг хариуцдаггүй (жишээлбэл, Линукс дээрх дискийг /home, /var, /boot хуваалтууд болгон хуваах гэх мэт), гэхдээ давхаргатай байдаг. Linux-ийн AUFS цөмийн механизмыг ашиглан бие биенийхээ дээр байрлуулна (btrfs, төхөөрөмжийн зураглагч, давхаргыг ашиглах замаар ижил функцийг дэмждэг).

Энэ хэрхэн ажилладагийг ойлгохын тулд контейнерт суулгасан Ubuntu руугаа буцъя. Өгүүллийн эхэнд байгаа хоёр дахь жишээнд үзүүлсэн шиг бид савыг ажиллуулж, nginx суулгадаг боловч үүнийг дуусгаж болохгүй. Үүний оронд бид өөр терминал ажиллуулж, ажиллаж байгаа контейнеруудын жагсаалтыг харна:

$ sudo docker ps

Энэ тушаал нь ажиллаж байгаа бүх контейнерийг ID, ашигласан зураг, эхлүүлсэн тушаал, ажиллах хугацаа болон бусад зүйлсийн хамт харуулах болно. Бид CONTEINER ID баганад байгаа утгыг сонирхож байна. Үүнийг хуулж аваад дараах тушаалыг ажиллуулна уу:

$ sudo docker ubuntu-nginx контейнер ID-г хийдэг

Ажлаа дуусгасны дараа та савнаас гарах боломжтой бөгөөд ингэснээр ажлаа дуусгана. Тэгээд бид зүгээр л ubuntu-nginx контейнерийг ажиллуулаад nginx хаана ч алга болоогүй, байрандаа байгааг харлаа.

$ sudo docker run -i -t ubuntu-nginx /bin/bash # аль nginx /usr/sbin/nginx

Бид юу хийсэн бэ? Бид өөр давхарга, өөрөөр хэлбэл нэмэлт FS дүрсийг үүсгэж, nginx агуулсан FS дүрсийг оруулаад аль хэдийн байгаа Ubuntu Docker дүрс дээр үндэслэн шинэ Docker дүрсийг үүсгэсэн. Бага зэрэг ойлгомжгүй сонсогдож байна, тийм үү? Энэ нь үнэндээ маш энгийн.

Докерын зураг бүр хэд хэдэн FS зургаас бүрддэг болохыг бид аль хэдийн олж мэдсэн. Бид савыг эхлүүлэх үед эдгээр зургуудыг AUFS ашиглан нэг лавлах бүтцэд холбож, угсардаг. Жишээлбэл, эхний зураг нь зөвхөн үндсэн Ubuntu суулгацыг агуулж болно, хоёр дахь нь стандарт демонуудын багцыг, гурав дахь нь удирдлагын хэрэгслүүд гэх мэтийг агуулж болно. Docker нь бүх давхаргыг зөвхөн унших горимд холбодог боловч зургийн агуулгыг өөрчлөхийн тулд өөр нэг хоосон давхаргыг унших/бичих горимд суулгасан болно.


Анхдагч байдлаар, контейнер дууссаны дараа (үүнд ажиллаж байгаа хамгийн сүүлийн процесс дууссаны дараа тохиолддог) сүүлчийн давхарга устгагдах бөгөөд бидний бүх өөрчлөлт алга болно. Гэсэн хэдий ч, бид docker commit командыг ашиглан одоо байгаа FS зураг дээр тулгуурлан шинэ Docker дүрс үүсгэх замаар өөрчлөлтийг "хэрэглэх" боломжтой, мөн бидний өөрчлөлттэй FS дүрс. Ингэснээр бидний хийсэн өөрчлөлтүүд хадгалагдах болно. Хэрэв бид хүсвэл ubuntu-nginx контейнерийг ажиллуулж, түүнд өөрчлөлт хийж, commit ашиглан шинэ Docker дүрс рүү хадгалах боломжтой бөгөөд өөр давхарга нэмж болно. Үүссэн бүх зургийн жагсаалтыг (мөн Docker Hub-аас хүлээн авсан) харахын тулд та docker images командыг ашиглаж, давхарга үүссэн түүхийг үзэхийн тулд docker history командыг ашиглаж болно.

$ sudo docker түүх ubuntu-nginx

Зураг үүсгэх энэхүү арга нь контейнер удирдахад илүү уян хатан байдлыг өгч, маш их цаг хэмнэж, аль хэдийн тохируулсан Docker зургийг машинуудын хооронд хялбархан шилжүүлэх боломжийг олгодог (зургийг Docker Hub-д байршуулж, дараа нь өөр машинд байрлуулж болно). Илүү тодорхой давуу тал бол дискний зай хэмнэх явдал юм. Хэрэв бид бүхэл бүтэн амьтны хүрээлэнг машин дээр байрлуулж, тус бүр нь нэг үндсэн зураг дээр (жишээ нь, ижил Ubuntu) суурилсан байх болно - тэдгээр нь бүгд энэ үндсэн зурагт хамаарах бөгөөд агуулгыг нь хуулбарлахгүй.


Линуксээс гадуур докер

Docker-ийг OS X эсвэл Windows дээр ажиллуулах цорын ганц арга бол түүнийг виртуал машинд суулгах явдал юм. Үүнийг гараар хийх шаардлагагүй, та бэлэн шийдлийг ашиглаж болно, жишээ нь boot2docker. Энэ бол VirtualBox доторх Linux болон Docker бүхий виртуал машиныг хурдан байрлуулж, SSH-ээр автомат хандалтаар ажиллуулах боломжийг олгодог скриптүүдийн багц юм. Үүнийг ашиглах заавар болон суулгагчийг албан ёсны Docker вэбсайтаас олж болно.

Сүлжээний тохиргоо

Контейнерүүд хоорондоо болон гадаад ертөнцтэй харилцахын тулд Docker автоматаар виртуал сүлжээний гүүрийг босгож, гадаад сүлжээний интерфэйсийг хувиргах дүрмийг (NAT) тохируулдаг. Энэ нь гаднаас чингэлэгт хүрэх боломжгүй болно гэсэн үг юм. Гэсэн хэдий ч бид порт дамжуулалтыг тохируулж болох бөгөөд ингэснээр машины гадаад сүлжээний интерфэйс дээрх тодорхой портууд руу илгээсэн хүсэлтийг контейнерийн заасан портууд руу автоматаар дамжуулдаг. Жишээлбэл, Мирантис дээр түлшний гол зангилаа (энэ нь OpenStack-ийг байрлуулах, тохируулах GUI юм) Docker дээр ажилладаг бөгөөд ful/nginx контейнер (порт 8000) руу хандах хандалтыг нээхийн тулд порт дамжуулах функцийг ашигладаг:

$ sudo docker run -d -p 8000:8000 түлш/nginx_6.0: хамгийн сүүлийн үеийн /usr/local/bin/start.sh

Бид 8000 портыг -p сонголтын хоёрдахь дугаарыг өөрчилснөөр өөр ямар ч контейнер порт руу дамжуулж болох боловч энэ тохиргоонд энэ нь утгагүй юм.

Файл дамжуулах ба Dockerfile

Өгүүллийн эхэнд бид ямар ч файл эсвэл лавлахыг хост системээс контейнер рүү дамжуулах боломжийг олгодог -v тугтай аль хэдийн танилцсан. Энэ бол маш тохиромжтой функц бөгөөд түр зуурын өгөгдлийг хадгалах, хэд хэдэн контейнер хооронд файл хуваалцахад ашиглаж болно. Mirantis-д энэ функцийг савны доторх Fuel/astute үйлчилгээний (/etc/astute) тохиргооны файлуудыг дамжуулахад ашигладаг:

$ sudo docker run -d -v /etc/astute fuel/astute_6.0:хамгийн сүүлийн үеийн /usr/local/bin/start.sh

Dockerfile дахь VOLUME командыг ашиглан ижил зүйлийг хийж болно. Dockerfile нь өөрөө Makefile-тэй локал дүйцэхүйц боловч сүүлийнх нь эх сурвалжаас програм бүтээхэд зориулагдсан боловч Dockerfile нь Docker-д зориулж зураг бүтээх боломжийг олгодог. Үүний зорилго нь чингэлэг нээх, түүн дээр зарим үйлдлүүд хийх, хийх шаардлагагүйгээр шинэ зураг үүсгэх ажлыг хялбарчлах явдал юм. Та зүгээр л Dockerfile бичиж болно, Docker таны төлөө бүх зүйлийг хийх болно. Жишээлбэл, Fuel/astute бүтээх Dockerfile-г авч үзье:

Шатахуун/центос ҮЙЛЧИЛГЭЭЧ Мэттью Мосесоноос [имэйлээр хамгаалагдсан] RUN rm -rf /etc/yum.repos.d/*;\ echo -e "\nname=Nailgun Local Repo\nbaseurl=http://$(route -n | awk "/^0.0.0.0/ ($2 хэвлэх) )"):_PORT_/os/x86_64/\ngpgcheck=0" > /etc/yum.repos.d/nailgun.repo;\ yum clean all;\ yum --quiet install -y ruby21-nailgun-mcagents sysstat ADD гэх мэт. /etc ADD start.sh /usr/local/bin/start.sh RUN puppet apply --detailed-exitcodes -d -v /etc/puppet/modules/nailgun/examples/astute-only.pp; [[$? == 0 || $? == 2 ]] RUN chmod +x /usr/local/bin/start.sh;\ echo -e "\nname=Nailgun Local Repo\nbaseurl=file:/var/www/nailgun/centos/x86_64\ngpgcheck=0 " > /etc/yum.repos.d/nailgun.repo; yum бүх VOLUME /etc/astute CMD /usr/local/bin/start.sh цэвэрлэх

Энэ нь юунд зориулагдсан болохыг ойлгоход хэцүү биш юм. Энэ нь түлш/centos дээр тулгуурлан зураг үүсгэж, зургийг бэлтгэх хэд хэдэн командыг ажиллуулж, одоогийн лавлахаас файлуудыг зураг руу нэмж, Хүүхэлдэйн манифестийг ашиглаж, зарим файлын зөвшөөрлийг өөрчилдөг, /etc/asture/ лавлахыг устгадаг. хост системийг контейнерт суулгаж /usr/local/bin/start.sh командыг ашиглан контейнер ажиллуулна.

Контейнер бүтээхийн тулд Dockerfile болон түүнд нэмэгдэх бүх файлыг зарим директорт байрлуулаад дараах тушаалыг ажиллуулна уу.

$ sudo docker бүтээх түлш/astute_6.0:хамгийн сүүлийн үеийн

Энэ тохиолдолд бид fuel/astute_6.0:latest нэрийг сонгосон, гэхдээ энэ нь юу ч байж болно.

Docker-тэй ажиллах нюансууд

Докер нь контейнер бүр зөвхөн нэг үйлчилгээтэй байх ёстой гэсэн санаан дээр тулгуурлан бүтээгдсэн. Та Apache, MySQL, nginx, Varnish болон төсөлд хэрэгтэй байж болох бүх зүйлийг өөр өөр саванд хийж, дараа нь Docker ашиглан бүгдийг нь цуглуулдаг. Энэ арга нь тохиргоог хялбархан өөрчлөх, шинэчлэлтүүдийг турших, хувь хүний ​​үйлчилгээг бусад машин руу шилжүүлэх боломжийг олгодог тул илүү уян хатан байдлыг хангадаг.

Үүнтэй ижил шалтгаанаар Docker-ийг init дэмон, cron болон syslog дэмонууд болон бусад стандарт түгээлтийн бүрэлдэхүүн хэсгүүдтэй бүрэн хэмжээний Линукс орчинг ажиллуулахад төдийлөн ашигладаггүй. Үүний оронд бид зүгээр л хэрэгтэй үйлчилгээгээ эхлүүлдэг бөгөөд энэ нь зөвхөн виртуал орчинд ажилладаг:

$ sudo docker run -d -p 80 ubuntu-nginx /usr/sbin/nginx

Гэхдээ энд нэг жижиг асуудал байна. Докер дотор ажиллаж байгаа процесс (энэ тохиолдолд nginx) дууссаны дараа шууд контейнерийг зогсоодог ба nginx нь анхдагчаар дэмончлэгдсэн байдаг, өөрөөр хэлбэл, энэ нь шинэ процессыг үүсгэж, бидний гараар эхлүүлсэн процессыг зогсоодог тул Docker үүний дараа шууд дуусгавар болгож, сав, сэрээтэй Докер хадаж байна.

Nginx-ийн хувьд та demon off-г нэмснээр энэ асуудлыг даван туулж чадна; түүний тохиргооны эхний мөр. Бусад демонууд өөрсдийн тохиргоог шаарддаг бөгөөд заримыг нь тушаалын мөрөөс шууд дэмон болгохоос сэргийлж болно. Жишээлбэл, sshd үүнд -D тугийг өгдөг:

$ sudo docker run -d -p 22 ubuntu-ssh /usr/sbin/sshd -D

Та ямар ч үед логийг харах эсвэл тохиргоог өөрчлөхийн тулд docker exec командыг ашиглан контейнерт холбогдож болно (цаашид контейнер ID нь docker ps гаралт дээр харагдах ID эсвэл эхлүүлэх үед заасан нэр юм. --name сонголт):

$ sudo docker exec -ti контейнер ID /bin/bash

Гэхдээ энд бас нэг жижиг зүйл байна. Бидний мэдэж байгаагаар виртуал орчныг унтраавал виртуал орчныг ажиллуулах явцад хуримтлагдсан бүх мэдээлэл алдагдах ба түүнтэй хамт тохиргоонд хийсэн бүртгэлүүд болон өөрчлөлтүүд алга болно. Бид давхаргуудыг эцэс төгсгөлгүй үүсгэж чадахгүй (тэдгээрийн тоо 127-оос илүүгүй байж болно) гэхдээ бид арай өөр замаар явж, Docker-д суулгасан лог нэгтгэх системийг ашиглаж болно. Мэдээжийн хэрэг, Docker бие даасан програмуудаас лог цуглуулж чадахгүй ч STDOUT гаралт, өөрөөр хэлбэл ямар ч консолын гаралтыг хуримтлуулж чадна. Бидэнд үлдэх зүйл бол nginx тохиргоог өөрчлөх бөгөөд ингэснээр логуудыг /dev/stdout руу юүлж, дараа нь docker logs командыг ашиглан тэдгээрийг харах болно.

$ sudo docker лог контейнер ID

Өөр нэг бөгөөд илүү зөв сонголт бол аль хэдийн тайлбарласан -v сонголтыг ашиглан бүртгэлийг (мөн шаардлагатай бол тохиргоог) хост систем рүү шилжүүлэх явдал юм.

$ sudo mkdir /root/logs $ sudo docker run -d -v /root/logs:/var/logs -p 80 ubuntu-nginx /usr/sbin/nginx

Шаардлагатай бол докер зогсоох командыг ашиглан дотор нь ажиллаж байгаа үйлчилгээг дуусгаснаар контейнерийг зөв зогсоож болно.

$ sudo docker stop контейнер ID

Хэрэв ямар нэг шалтгааны улмаас зөв зогсох нь ажиллахгүй бол та kill ашиглан устгаж болно:

$ sudo docker kill контейнер ID

Энэ нь олон шинэ хүмүүсийн мартдаг нэг чухал зүйлийг хийдэг: Docker нь контейнерийн талаархи мета мэдээллийг хадгалдаг. Үнэн хэрэгтээ хэрэв та docker run командын аргументуудыг ашиглан nginx-г ажиллуулж, түүний нэр, контейнер руу дамжуулах шаардлагатай лавлахууд, портууд, орчны хувьсагчууд гэх мэтийг ажиллуулбал энэ бүх мэдээлэл хадгалагдах болно гэсэн үг юм. Контейнер дуусч, дараагийн удаа эхлүүлэхийн тулд та үүнийг зааж өгөх шаардлагагүй бөгөөд дараах тушаалыг ажиллуулна уу (та ID-ийн оронд нэрийг ашиглаж болно):

$ sudo docker эхлэх контейнер ID

Хэрэв төлөвийг хадгалах шаардлагагүй бол (жишээ нь, зарим функцийг шалгах эсвэл шалгах) --rm тугийг ашиглаж болно, энэ нь Docker-ийг контейнерыг дуусгасны дараа бүрэн устгахад хүргэдэг (зураг хадгалагдсан):

$ sudo docker run --rm -i -t busybox /bin/bash

Та дараах тушаалыг ашиглан өмнө нь хадгалсан бүх савыг устгаж болно.

# docker rm $(докер ps -a -q)

Докер савнууд осолдсон тохиолдолд бие даан дахин эхлүүлж, системийг эхлүүлэх үед ч эхлүүлэх боломжтой. Таны хийх ёстой зүйл бол зүгээр л --restart сонголтыг ашиглах явдал юм:

$ sudo docker run --restart=always \ -d -v /root/logs:/var/logs -p 80 \ ubuntu-nginx /usr/sbin/nginx

Ямар ч үед зургийг нэг файл руу экспортлож, дараа нь өөр машин дээр импортлох боломжтой. Үүний тулд docker save болон docker restore командуудыг өгсөн болно. Тэдгээрийг ашиглах нь маш энгийн бөгөөд экспортыг дараах байдлаар гүйцэтгэдэг.

$ sudo docker save -o ubuntu-nginx.img ubuntu-nginx

Мөн импорт нь дараах байдалтай байна.

$ sudo docker ачаалах -i ubuntu-nginx.img

дүгнэлт

Docker бол маш сайн хэрэгсэл юм. Мэдлэггүй хүмүүсийн хувьд энэ нь хамгаалагдсан хязгаарлагдмал орчинд программ хангамж ажиллуулахаас өөр зүйлд тохиромжгүй тоглоом мэт санагдаж болох ч түүний тусламжтайгаар та асар том асуудлыг шийдэж чадна, бид дараагийн өгүүллээр ярих болно.

LXC, OpenVZ болон бусад үйлдлийн системийн түвшний виртуалчлалын шийдлүүдээс Docker-ийн давуу тал

  1. Docker нь зөөврийн, бүх нийтийн зургийн форматыг ашигладаг. Энэ нь эдгээр зургуудыг ямар ч асуудалгүйгээр өөр машин руу шилжүүлж, бусад хэрэглэгчид ашиглах боломжтой гэсэн үг юм.
  2. Зураг нь бусад зургийн үндэс болж чадна. Docker-д эцсийн дүрсийг үүсгэхийн тулд олон давхаргыг ашиглах нь хэвийн үзэгдэл юм. Та үндсэн Ubuntu зургаас эхэлж, дараа нь Apache 2.4-ийг нэмж Ubuntu + Apache микросервисийг үүсгэж болно.
  3. Үйлдэл хийх үед зургийг GIT дээр хийдэг шигээ хувилбар болгож болно.
  4. Docker нь том нийгэмлэг, өргөн хүрээтэй экосистемтэй бөгөөд үүнд контейнеруудыг масштаблах, бүлэглэх, хянах, байрлуулах, удирдахад зориулсан олон тооны хэрэгслүүд багтдаг.

Docker бол контейнер ашиглах замаар програмуудыг ажиллуулахад шаардлагатай бүх зүйлийг өгдөг алдартай хэрэгсэл юм. Docker контейнеруудыг ашигласнаар таны програм таны ажиллуулж буй ямар ч машин дээр адилхан ажиллах болно гэдэгт итгэлтэй байж болно.

Энэ зааварт та контейнер болон Докерын дүрс хоорондын хамаарал, савыг хэрхэн суулгах, эхлүүлэх, зогсоох, устгах талаар суралцах болно.

Хяналт

Докерын зурагсавыг бий болгоход ашигладаг загвар гэж үзэж болно. Зургууд нь ихэвчлэн эх файлын системээс эхэлдэг бөгөөд дараа нь янз бүрийн өөрчлөлтүүд болон тэдгээрийн харгалзах эхлүүлэх параметрүүдээр давхарласан байдаг. Ердийн Linux түгээлтүүдээс ялгаатай нь Docker дүрс нь ихэвчлэн програмыг ажиллуулахад шаардлагатай хэсгүүдийг агуулдаг. Зургууд нь статусгүй бөгөөд өөрчлөгддөггүй. Тэдгээрийг Docker контейнеруудын эхлэл, суурь гэж хэлэхэд илүү зөв байх болно.

Таныг docker run командыг өгөх тэр мөчид зургууд амилах болно - энэ нь зургийн дээд талд унших-бичих шинэ давхарга нэмж шууд контейнер үүсгэдэг. Зөвхөн уншигдах давхаргын энэхүү хослолыг (дээд талд нь унших-бичих давхаргыг нэмсэн) файлын системүүдийн нэгдмэл холболтуудыг шаталсан файлын систем гэж нэрлэдэг UnionFS. Ажиллаж байгаа контейнерт байгаа файлд өөрчлөлт хийх үед файлыг зөвхөн унших давхаргаас унших-бичих давхарга руу хуулж, өөрчлөлтүүд хэрэгжинэ. Одоо анхны файл нь унших, бичих хувилбараар нуугдаж байгаа боловч устгагдаагүй байна. Бичих, унших түвшний ийм өөрчлөлтүүд зөвхөн өгөгдсөн бие даасан саванд байдаг. Савыг устгах үед бүх өөрчлөлтүүд мөн алга болно (хэрэв хадгалагдаагүй бол).

Контейнертэй ажиллах

Таныг docker run командыг ашиглах болгонд таны зааж өгсөн зургаас шинэ контейнер үүснэ. Илүү тодорхой жишээнүүдийг доор авч үзэх болно.

Алхам 1: Хоёр сав үүсгэ

Доорх docker run команд нь Ubuntu дүрсийг суурь болгон ашиглах шинэ контейнер үүсгэдэг. -t шилжүүлэгч нь терминалыг хангах бөгөөд -i нь түүнтэй харилцах боломжийг олгоно. Контейнер дотор орохын тулд та стандарт bash командыг ашиглаж болно. Өөрөөр хэлбэл, та дараахь зүйлийг оруулж болно.

$ docker run -ti ubuntu

$ docker run -i -t ubuntu: 14.04 /bin/bash

(хоёр дахь тохиолдолд та /bin/bash командыг контейнер дотор ажиллуулж, автоматаар контейнер дотор байх болно)

Тушаалын мөр нь таныг супер хэрэглэгчийн хувьд контейнер дотор байгааг батлах болно. @ тэмдгийн дараа та өөрийн байгаа савны ID-г харах болно:

Root@11cc47339ee1:/#

Одоо echo командыг ашиглан /tmp санд өөрчлөлт оруулаад, өөрчлөлтүүд нь cat командыг ашиглан бичигдсэн эсэхийг шалгана уу.

Цуурай "Жишээ1" > /tmp/Example1.txt cat /tmp/Example1.txt

Дэлгэц дээр та дараахийг харах ёстой:

Одоо савнаас гарна уу:

Энэ тушаалыг гүйцэтгэсний дараа та тушаалын мөрөөс гарвал Docker контейнер ажиллахаа болино. Хэрэв та docker ps командыг ашиглавал үүнийг харж болно:

Ажиллаж буй савнуудын дунд та дээрх ашигласан савыг харахгүй.

CONTAINER ID IMAGE командыг үүсгэсэн статусын портуудын нэрс

Гэсэн хэдий ч, та ажиллаж байгаа болон зогссон бүх контейнерийг харахын тулд -a шилжүүлэгчийг нэмж болно, дараа нь таны ажиллаж байсан контейнер тодрох болно:

$ docker ps -a CONTAINER ID ЗУРГИЙН КОМАНД БҮТЭЭГДСЭН БАЙДАЛ ПОРТЫН НЭРҮҮД 11cc47339ee1 ubuntu "/bin/bash" 9 минутын өмнө Гарсан (127) 10 секундын өмнө small_sinoussi

Контейнер үүсгэх үед ID болон автоматаар үүсгэгдсэн нэртэй байна. Энэ тохиолдолд 11cc47339ee1 нь савны таних дугаар (ID) бөгөөд small_sinoussi нь үүсгэгдсэн нэр юм. ps -a команд нь энэ өгөгдөл, мөн контейнерийг үүсгэсэн дүрсийг (энэ тохиолдолд ubuntu), хэзээ (9 минутын өмнө) савыг үүсгэсэн, ямар командыг ажиллуулж байсныг ("/bin/) харуулдаг. bash"). Та мөн контейнерийн статусыг харж болно (энэ нь 10 секундын өмнө явсан). Хэрэв контейнер ажиллаж байсан бол та "Дээшээ" статус болон ажиллаж байсан цагийг харах болно.

Одоо та савыг үүсгэх тушаалыг дахин оруулж болно:

$ docker run -ti ubuntu

Хэдийгээр энэ тушаал нь сүүлийн үеийнхтэй адилхан харагдаж байгаа ч энэ нь цоо шинэ контейнер үүсгэх болно - энэ нь өөр ID дугаартай байх бөгөөд хэрэв та өмнө нь засварласан Example1 файлын агуулгыг харахыг оролдвол та үүнийг олохгүй. .

Root@6e4341887b69:/# муур /tmp/Жишээ1

Гаралт нь:

Cat: /tmp/Жишээ1: Ийм файл эсвэл лавлах байхгүй

Өгөгдөл алга болсон мэт санагдаж магадгүй ч энэ нь мэдээжийн хэрэг тийм биш юм. Хоёр дахь савнаас гарч, хоёр сав (хүссэн файлтай эхнийхийг оруулаад) систем дээр байгаа эсэхийг шалгаарай.

Root@6e4341887b69:/# exit $ docker ps -a

Гаралт нь:

CONTAINER ID ЗУРГИЙН КОМАНД БҮТЭЭГДСЭН БАЙДАЛ ПОРТЫН НЭР 6e4341887b69 ubuntu "/bin/bash" Нэг минутын өмнө Гарсан (1) 6 секундын өмнө kickass_borg 11cc47339ee1 ubuntu "/bin/bash" 15 минутын өмнө жижиг (15 минутын өмнө)

Алхам 2: Эхний савыг дахин эхлүүл

Аль хэдийн үүсгэсэн контейнерийг дахин эхлүүлэхийн тулд та эхлүүлэх командыг хоёр -ai шилжүүлэгчээр ашиглах хэрэгтэй. Төгсгөлд нь ажиллахыг хүссэн савныхаа дугаар эсвэл нэрийг нь бичих хэрэгтэй. Үүний үр дүнд таны тушаал дараах байдлаар харагдах болно.

Docker start -ai 11cc47339ee1

Одоо та контейнер доторх bash бүрхүүлд буцаж ирсэн бөгөөд нийтлэлийн эхэнд үүсгэсэн файл энд байгаа эсэхийг шалгах боломжтой.

Cat /tmp/Example1.txt

Та дэлгэцэн дээр харах болно:

Одоо та савнаас гарч болно:

Ингэснээр та зогсоод дараа нь савыг дахин эхлүүлсэн ч савны доторх бүх өөрчлөлт хадгалагдана. Контейнер өөрөө устсан үед л өгөгдөл устана. Мөн дээрх жишээнээс харахад өөрчлөлт нь нэг саванд (бүх саванд нэг дор биш) нөлөөлж байгааг харуулж байна.

Алхам 3: Хоёр савыг салга

Эцсийн алхам бол энэ зааварчилгааг дагаж үүсгэсэн хоёр савыг устгах явдал юм. Үүнийг хийхийн тулд та docker rm командыг ашиглах хэрэгтэй. Гэхдээ энэ нь зөвхөн зогссон саванд нөлөөлдөг. Тушаалын дараа та нэг буюу хэд хэдэн савны таних дугаар эсвэл нэрийг зааж өгөх ёстой. Жишээлбэл, өмнө нь үүсгэсэн савыг устгахын тулд та дараах тушаалыг оруулах хэрэгтэй.

Docker rm 6e4341887b69 small_sinoussi

Дэлгэц гарч ирэх болно:

6e4341887b69 small_sinoussi

Одоо хоёр савыг устгасан.

Дүгнэлт

Энэ хичээлээр та Docker дээр ажиллах үндсэн командуудын талаар суралцаж, контейнер хэрхэн үүсгэх, зогсоох, дахин эхлүүлэх, устгах талаар сурсан.

Docker дүрс болон контейнер удирдах командын тусламж.

Нөхцөл

Зурагнь тодорхой үйлдлийн систем дээр суурилсан статик бүтэц юм.

Контейнер- энэ бол ажиллаж байгаа зургийн жишээ юм.

Докер ажиллуулах зөвшөөрөл

Docker контейнеруудыг өөрийн хэрэглэгчийн доор ажиллуулахын тулд (sudo-гүйгээр) та тохирох бүлэгт нэмэх шаардлагатай:

Sudo usermod -aG докер YOU_USER

Docker үйлчилгээ

Docker үйлчилгээний удирдлага:

Sudo service docker start|stop|restart|status sudo restart docker # alias

Зураг

Боломжтой зургийн жагсаалт:

Докерын зургууд

Албан ёсны бүртгэлээс (зургийн репозитор) зургийг (эсвэл бүхэл бүтэн агуулахыг) татаж авна уу:

Docker pull ubuntu: 14.04

Зургийн мэдээллийг харах:

Докер ubuntu-г шалгана

Зургийг устгах:

Доккер CONTAINER_ID IMAGE_NAME-г гүйцэтгэнэ

Контейнер

Анхаар!

Docker контейнерийг ажиллуулсны дараа үйлчилгээ/демонууд (SSH, Supervisor болон бусад) автоматаар эхлэхгүй! Би алдааг засах гэж хэдэн цаг зарцуулсан: " ssh_exchange_identification: уншина уу: Холболтыг үе тэнгийнхэн дахин тохируулсан", SSH-ээр контейнерт холбогдохыг оролдох үед. Гэвч sshd дэмон нь эхлээгүй байна. Контейнер ажиллаж эхэлсний дараа та шаардлагатай демонууд эсвэл хянагчийг гараар эхлүүлэх шаардлагатай болно:

Docker exec CONTAINER_ID bash -c "үйлчилгээ ssh эхлүүлэх"

Бүх савны жагсаалт (ажиллаж байгаа болон зогссон):

Docker ps -a

Савыг арилгах:

Docker rm CONTAINER_ID CONTAINER_ID

Бүх савыг устгах:

Docker rm $(докер ps -aq)

Интерактив горимд Ubuntu 14.04-тэй Docker контейнер үүсгэж ажиллуулаарай (энэ контейнерийн бүрхүүлийг нээнэ үү):

Docker run -it ubuntu bash docker run [сонголтууд] image [command] -i Interactive mode, STDIN-ийг нээлттэй байлгах -t stdin болон stdout хавсаргасан псевдо-TTY-г хуваарилах/үүсгэх --name ID-н оронд контейнерийн нэр -w Ажлын лавлахыг зааж өгөх ( --workdir) -e Контейнер доторх орчны хувьсагчийг тохируулах -u Хэрэглэгч:бүлэг дор контейнер ажиллах ёстой -v Хост системийн файл эсвэл лавлахыг контейнерт холбох -p Контейнерийн порт(ууд)-ыг дамжуулах сав -<порт хост-системы>:<порт контейнера>(--publish=) --entrypoint ENTRYPOINT Dockerfile-аас өгөгдмөл командыг солих

Анхаарна уу

Савыг зогсоохгүйгээр TTY-г салгахын тулд Ctr + P + Ctrl + Q дарна уу.

SSH порт дамжуулалт бүхий демон горимд Docker контейнер үүсгэж ажиллуулна уу:

Docker run -itd -p 127.0.0.1:221:22 ubuntu

Контейнер үүсгэж ажиллуулаад зогсоосны дараа энэ контейнерийг устгана уу (дибаг хийхэд хэрэгтэй):

Docker run -i -t --rm ubuntu bash

Зогсоосон савыг интерактив байдлаар эхлүүлэх:

Докерын эхлэл -i CONTAINER_ID

Демончлогдсон контейнерт холбогдоно уу:

Докер CONTAINER_ID-г хавсаргана

Docker командууд

Хэрэглээ: docker COMMAND docker demon [ --help | ... ] docker [ --help | -v | --version ] Контейнерийн бие даасан ажиллах хугацаа. Сонголтууд: --config=~/.docker Үйлчлүүлэгчийн тохиргооны файлуудын байршил -D, --debug=false Дибаг хийх горимыг идэвхжүүлэх --disable-legacy-registry=false Хуучин бүртгэлтэй холбоо барьж болохгүй -H, --host= Daemon залгуур( s) -h-д холбогдохын тулд --help=false Хэвлэх хэрэглээ -l, --log-level=info Бүртгэлийн түвшинг тохируулах --tls=false TLS ашиглах; --tlsverify --tlscacert=~/.docker/ca.pem-ээр илэрхийлсэн Итгэлцлийн гэрчилгээ нь зөвхөн энэ CA-р гарын үсэг зурсан --tlscert=~/.docker/cert.pem TLS сертификатын файл руу хүрэх зам --tlskey=~/.docker/ key.pem TLS түлхүүр файлд хүрэх зам --tlsverify=false TLS-г ашиглаж, алсын зайнаас -v, --version=false-г шалгах Хувилбарын мэдээллийг хэвлэх болон гарах Командууд: хавсаргах Ажиллаж байгаа контейнер бүтээхэд хавсаргах Dockerfile commit-ээс зураг бүтээх Контейнерын шинэ дүрсийг өөрчлөх cp Контейнер болон локал файлын системийн хооронд файл/хавтас хуулах Шинэ контейнер үүсгэх diff Контейнерийн файлын системийн үйл явдлуудын өөрчлөлтийг шалгах Серверээс бодит цагийн үйл явдлуудыг авах Ажиллаж буй контейнерт командыг ажиллуулах экспорт Контейнерын файлын системийг tar архивын түүх болгон экспортлох Зургийн түүхийг харуулах Зургийн жагсаалтыг харуулах Зургийг импортлох Файлын системийн зургийн мэдээллийг үүсгэхийн тулд tarball-аас агуулгыг импортлох Системийн хэмжээнд мэдээллийг шалгах Контейнер эсвэл зураг дээрх доод түвшний мэдээллийг буцаах kill ажиллаж байгаа контейнерийн ачааллыг устгах tar архиваас зураг ачаалах эсвэл STDIN-ээр нэвтрэх Docker бүртгэлийн бүртгэлээс гарах Docker бүртгэлийн бүртгэлээс гарах Контейнер сүлжээний логуудыг татах Docker сүлжээг удирдах Контейнер порт доторх бүх процессыг түр зогсоох Жагсаалтын портын зураглал эсвэл CONTAINER ps-ийн тусгай зураглал Жагсаалтын савыг татах Бүртгэлийн түлхэлтээс зураг эсвэл репозиторыг татах Зураг эсвэл репозиторыг бүртгэлийн нэр рүү түлхэх Контейнерийн нэрийг өөрчлөх Контейнерийг дахин эхлүүлэх rm Нэг буюу хэд хэдэн контейнер устгах rmi Нэгийг устгах эсвэл түүнээс олон зураг ажиллуулна Шинэ саванд команд ажиллуулна Хадгалах зураг(ууд)-ыг tar архивт хадгалах Ажиллаж байгаа контейнерийн тагийг зогсоох Зургийг агуулахын дээд хэсэгт шошголох Контейнерийн ажиллаж байгаа процессуудыг харуулах Контейнерийн эзлэхүүн дэх бүх процессыг түр зогсоохыг зогсоох Докерын эзлэхүүнийг хүлээх Контейнер зогсох хүртэл блок хийж, түүний гарах кодыг хэвлэх "docker COMMAND --help"-г ажиллуулна уу. командын талаар дэлгэрэнгүй мэдээлэл авахыг хүсвэл.