در این آموزش، با مفهوم Tag در داکر آشنا میشویم. داکر امکان ذخیره ایمیجها را در مخزن Docker Hub فراهم میکند. Tag در داکر، هویت منحصربهفردی به داکر ایمیج میدهد. در یک مخزن داکر، مجموعهای از تصاویر مشابه با نسخههای مختلف وجود دارد که بهوسیله تگها شناسایی میشوند. در این مطلب یاد میگیریم چگونه با استفاده از دستورهای docker build و docker tag به یک ایمیج داکر برچسب (تگ) بزنیم.
Tag در داکر چیست؟
Tag در داکر یا برچسب داکر به ما کمک میکند تا بیلد ورژنها را برای ارسال ایمیج به Docker Hub مدیریت کنیم. داکر هاب به ما اجازه میدهد ایمیجها را بر اساس نام و Tag گروهبندی کنیم. چندین تگ Docker میتوانند به یک ایمیج خاص اشاره کنند.
در واقع، برچسبهای داکر مشابه یک کامیت خاص در Git هستند. برچسبهای داکر فقط یک نام مستعار برای شناسه ایمیج محسوب میشوند. نام Tag باید رشتهای از کاراکترهای ASCII باشد و میتواند شامل حروف کوچک و بزرگ، اعداد، Underline، نقطه و خط تیره شود. همچنین، نام تگها در داکر نباید با نقطه یا خط تیره شروع شود و میتواند حداکثر ۱۲۸ کاراکتر داشته باشد.
ساخت image با استفاده از Tag در داکر
قبل از ادامه، بیایید ابتدا Dockerfile نمونهای را ایجاد کنیم تا بعد نحوه برچسبگذاری یا Tag در داکر را نشان دهیم:
FROM centos:7
RUN yum -y install wget
RUN yum -y install unzip
RUN yum -y install java-1.8.0-openjdk
RUN yum clean all
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
RUN export JAVA_HOME
در این Dockerfile، ما تمام دستورات لازم برای نصب جاوا را با استفاده از «centos:7» به عنوان ایمیج پایه اجرا کردیم.
بیلد کردن ایمیج با یک Docker Tag
در داکر، میتوانیم در زمان بیلد کردن، به یک ایمیچ تگ بزنیم. برای نمونه، بیایید دستور برچسبزدن یا Tag زدن به یک ایمیج را بررسی کنیم:
$ docker build -t baeldung-java:5 .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM centos:7
---> eeb6ee3f44bd
Step 2/2 : RUN yum -y install wget
---> Using cache
---> 46ee47a7422d
Successfully built 46ee47a7422d
Successfully tagged baeldung-java:5
در کامند بالا، ما «baeldung-java:5» را به عنوان برچسب به ایمیج داکر دادیم. Tag در داکر برای مدیریت نسخههای بیلد شده و ارسال ایمیج به داکر هاب مفید است. ورژنبندی (Versioning) معمولاً برای استقرار (دیپلوی کردن) هر ایمیج داکر یا بازگشت به نسخه قدیمیتر استفاده میشود. همچنین میتوانیم برچسب را با نام کاربری و نام ایمیج با استفاده از ساختار زیر ارائه دهیم:
$ docker build -t baeldung/baeldung-java:5 .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM centos:7
---> eeb6ee3f44bd
....
Successfully built 46ee47a7422d
Successfully tagged baeldung/baeldung-java:5
در این دستور، ما نام کاربری «baeldung» را همراه با نام ایمیج«baeldung-java» و برچسب «5» ارائه کردهایم.
بیلد کردن ایمیج با چند Tag در داکر
در داکر، میتوانیم چندین برچسب یا Tag را به یک Image اختصاص دهیم. در اینجا، از دستور docker build برای اختصاص چندین برچسب به یک ایمیج در یک دستور واحد استفاده میکنیم. برای نمایش این موضوع، بیایید از همان دستور مربوط به Dockerfile قبلی این بار با ۲ تگ استفاده کنیم.
$ docker build -t baeldung-java:5 -t baeldung-java:6 .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM centos:7
---> eeb6ee3f44bd
....
Successfully built 46ee47a7422d
Successfully tagged baeldung-java:5
Successfully tagged baeldung-java:6
در اینجا میبینیم که ۲ برچسب «baeldung-java:5» و «baeldung-java:6» برای شناسه تصویر «46ee47a7422d» ایجاد شدهاند.
بیلد کردن ایمیج بدون Tag در داکر
میتوانیم ایمیج داکر را بدون استفاده از هیچ برچسبی بیلد کنیم. اما برای پیگیری بهتر وضعیت و امور ایمیج، همیشه بهتر است حداقل یک Tag را همراه با نام ایمیج استفاده کنیم. بیایید دستور بیلد کردن یک ایمیج را بدون تگ بررسی کنیم:
$ docker build -t baeldung-java .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM centos:7
---> eeb6ee3f44bd
...
Successfully built 46ee47a7422d
Successfully tagged baeldung-java:latest
در این دستور، ما تصویر را بدون هیچ برچسبی ساختیم، بنابراین داکر به طور پیشفرض تگ «latest» را به صورت «baeldung-java:latest» به تصویر اختصاص میدهد. داکر همیشه با استفاده از تگ latest به آخرین نسخه پایدار اشاره میکند. حتی نسخههای قدیمی هم میتوانند latest نامیده شوند. اما نمیتوانیم پیشبینی کنیم که این نسخه اصلی است یا نسخه فرعی محسوب میشود.
تگ زدن ایمیج با استفاده از دستور docker tag
تا اینجا درباره برچسبگذاری تصویر با استفاده از دستور docker build صحبت کردیم. اما میتوانیم بهطور مستقیم با استفاده از دستور docker tag نیز به یک ایمیج در داکر برچسب بزنیم. برچسبگذاری ایمیج فقط یک نام مستعار برای نام ایمیج یا شناسه تصویر ایجاد میکند. در اینجا هر ۲ روش برچسبگذاری را بررسی میکنیم. فرمت کلی نام ایمیجهای داکر به صورت زیر است:
<user-name>/<image-name>:<tag-name>
در این ساختار، بخشِ بعد از دونقطه نشاندهنده برچسب متصل به تصویر است. بیایید دستور برچسبگذاری ایمیج را با استفاده از نام ایمیج بررسی کنیم:
$ docker tag baeldung-java:6 baeldung-java:8
دستور برچسبگذاری یک ایمیج با استفاده از شناسه ایمیج به صورت زیر است:
$ docker tag 46ee47a7422d baeldung-java:9
حالا بیایید تمام ایمیجهایی که تا کنون ایجاد شدهاند را بررسی کنیم:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
baeldung-java 5 46ee47a7422d 13 minutes ago 370MB
baeldung-java 6 46ee47a7422d 13 minutes ago 370MB
baeldung-java 8 46ee47a7422d 13 minutes ago 370MB
baeldung-java 9 46ee47a7422d 13 minutes ago 370MB
baeldung-java latest 46ee47a7422d 13 minutes ago 370MB
centos 7 eeb6ee3f44bd 7 months ago 204MB
در اینجا تمام ایمیجهایی را مشاهده کردید که تا کنون ایجاد کردهایم.
استفاده از Tag داکر در دستور Docker pull
تگهای داکر برای ایجاد ایمیج یا دریافت ایمیج از مخزن داکرهاب مفید هستند. در Dockerfile ما، از دستور FROM centos:7 استفاده کردیم. این دستور نسخه «7» ایمیج عمومی centos را دریافت میکند. میتوانیم یک ایمیج را با یا بدون برچسب دریافت کنیم. بیایید یک دستور با تگ مشخص را بررسی کنیم:
$ docker pull centos:7
دستور docker pull بدون هیچ برچسبی به صورت زیر استفاده میشود:
$ docker pull centos
دستور بالا ایمیج «centos:latest» را از مخزن عمومی داکر هاب دریافت میکند. همچنین میتوانیم چندین برچسب را معمولاً برای مشخص کردن نسخههای اصلی و فرعی به یک ایمیج اعمال کنیم.
جمعبندی
در این مقاله، یاد گرفتیم چگونه Tag در داکر را ایجاد و مدیریت کنیم. روشهای مختلف برچسبگذاری یک ایمیج را بررسی کردیم. ابتدا با استفاده از دستور docker build، به یک ایمیج برچسب زدیم. سپس، دستور docker tag را بررسی کردیم. علاوه بر این، نحوه استفاده از Tag در دستور docker pull را هم مورد بررسی قرار دادیم.