Naming & Tagging Containers and Images
Bu darsda image va containerlarni nomlashni o'rganamiz.
Avval imageni nomlashni o'rganamiz. Avvalgi qurgan imagelarimizni ko'radigan bo'lsak,
docker images
quyidagi natija ko'rinadi:
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> d59a2d117c4a 16 hours ago 1.11GB
REPOSITORY
ustunidagi qiymat imagening nomi, TAG
ustunidagi qiymat imagening tegi bo'ladi. Ya'ni imagening 2 qismdan iborat bo'ladi: asosiy nom va uning versiyasi.
Misol uchun python:3.12
nomli image bor. python
imagening nomi, 3.12
imagening tegi, boshqacha qilib aytganda versiyasi yoki ko'rinishi.
Xuddi shunday biz ham imageni qurayotganimizda unga nom berishimiz mumkin. Ammo bu bizga nega kerak? Qachonki yangi containerni ishga tushirayotganimizda avval imagening id qiymatini aniqlab olib, shu asosida bu jarayonni amalga oshiramiz. Agar imageni biror nomda qursak, shu nom orqali ham yangi containerni ishga tushirishimiz mumkin. Bu albatta ishlash uchun qulay.
Imageni nom berib qurish sintaksisi:
docker build -t <nomi>:<teg> .
Buning uchun biz -t
dan foydalanamiz. Misol uchun proyektimiz asosida yangi image quramiz:
docker build -t node-app-example:1.0
Imagelar ro'yxatini ko'radigan bo'lsak,
REPOSITORY TAG IMAGE ID CREATED SIZE
node-app-example 1.0 2c23f2c462c6 5 seconds ago 1.11GB
...
yangi nomdagi image qo'shilganini ko'rishimiz mumkin. Shuningdek imageni qurayotganimizda tegning qiymatini berishimiz shart emas:
docker build -t node-app-example
Bu holatda tegning qiymati avtomatik ravishda latest
bo'ladi.
REPOSITORY TAG IMAGE ID CREATED SIZE
node-app-example 1.0 2c23f2c462c6 3 minutes ago 1.11GB
node-app-example latest 2c23f2c462c6 3 minutes ago 1.11GB
Imageni nom berish orqali qurishni o'rgandik. Endi containerlarga nom berib, ishga tushirishni o'rganamiz.
Containerlar ro'yxatini ko'radigan bo'lsak,
docker ps -a
natijada
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e80c78508344 python "python3" 16 hours ago Exited (0) 16 hours ago vigorous_gould
61b7b302d662 d59a2d117c4a "docker-entrypoint.s…" 16 hours ago Exited (137) 16 hours ago lucid_mahavira
ushbu ma'lumotni ko'rishimiz mumkin. NAMES
ustunida containerlarni nomi bor. Containerni yaratishda nom bermasak, docker avtomatik ravishda uni tasodifiy nom bilan nomlaydi.
O'zimiz xohlagan nom bilan containerni ishga tushirmoqchi bo'lsak, u holda --name
dan foydalanamiz:
docker run -p 3000:80 -d --rm --name my-node-app node-app-example:1.0
Containerni my-node-app
deb nomladik. Agarda containerni o'chirmoqchi bo'lsak, uning nomini aniq bilganimiz uchun containerlar ro'yxatini tekshirib, nomi yoki id qiymatini topishimiz shart emas.
docker stop my-node-app
Yuqorida node-app-example:1.0
image asosida containerni ishga tushirdik. Uning o'rniga endi node-app-example:latest
image asosida containerni ishga tushiramiz:
docker run -p 3000:80 -d --rm --name my-node-app node-app-example:latest
Teg latest
bo'lganda tegni yozmasdan faqat uning nomini yozishimiz mumkin:
docker run -p 3000:80 -d --rm --name my-node-app node-app-example
Proyektimizdagi Dockerfile
faylidagi birinchi qatorda turgan
FROM node
# ...
node
bu yerda image va uning tegi yozilmagani uchun docker avtomatik ravishda node:latest
imageni tushunadi.
Ma'lumot uchun
latest
o'zbek tiliga tarjima qilinganda eng oxirgi
, ya'ni bu yerda node
imagening eng oxirgi versiyasidan foydalanilayotgani nazarda tutilyapti.