صبحانه کاری برای شروع رفاقت های کاری و تخصصی

آموزش گام به گام راه‌ اندازی رجیستری خصوصی داکر در اوبونتو

آموزش راه‌اندازی رجیستری خصوصی Docker در اوبونتو
Avatar
نویسنده: تیم نویسندگان بلاگ پارس پک
دوشنبه 14 فروردین 1402
مطالعه: ۱۷ دقیقه ۰ نظر ۱۳۸۶ بازدید

Docker Compose اپلیکیشنی است که ذخیره و تحویل ایمیج‌های کانتینر داکر را مدیریت می‌کند. اگر توسعه‌دهنده‌ای با تجربه قبلی کار با داکر باشید، حتماً می‌دانید که تولید ایمیج‌های داکر یکی از فرایندهای زمان‌بر است؛ به‌همین‌دلیل، استفاده از رجیستری داکر که در‌واقع ریپوزیتوری برای این ایمیج‌هاست، به شما کمک می‌کند تا در زمان خود صرفه‌جویی کنید. در این مقاله از آموزش اوبونتو و آموزش لینوکس بلاگ پارس پک، قصد داریم تا نحوه راه‌اندازی رجیستری خصوصی داکر را به‌طورکامل به شما آموزش دهیم. باوجوداین، برای استفاده بهتر از این مطلب آموزشی، بهتر است که با اصول اولیه داکر آشنا باشید.

استفاده از رجیستری خصوصی داکر چه مزایایی دارد؟

Docker Hub رجیستری عمومی و رایگان برای داکر است که از آن برای میزبانی ایمیج‌های سفارشی استفاده می‌شود؛ اما با‌توجه‌به اینکه ایمیج‌ها معمولاً حاوی تمام کدهایی هستند که برای اجرای برنامه به آن نیاز دارید، گاهی اوقات ممکن است به‌دلیل مسائل امنیتی، قصد نداشته باشید این ایمیج‌ها دردسترس عموم قرار بگیرند. در این مواقع، استفاده از رجیستری خصوصی کاربردی است.

حالا که با اهمیت و کاربرد رجیستری خصوصی آشنا شدید، می‌توانیم به‌سراغ ادامه این مطلب آموزشی برویم.

خرید سرور لینوکس با قابلیت راه‌اندازی رجیستری خصوصی از پارس پک

شما می‌توانید از این مقاله برای مدیریت سرویس‌های لینوکسی خود استفاده کنید و اگر قصد خرید هر یک از سرورهای لینوکس پارس پک را دارید، می‌توانید با کارشناسان فروش ما در ارتباط باشید. همچنین، شما می‌توانید برای اطلاع از تعرفه‌ها و هزینه‌ها به لینک‌های زیر مراجعه کنید.

پیش‌نیازها

برای استفاده از این مطلب آموزشی، به الزامات زیر نیاز خواهید داشت:

  • دو سرور با سیستم‌عامل Ubuntu 22.04 با یک کاربر غیر ریشه با دسترسی Sudo و یک فایروال راه‌اندازی شده. یکی از این سرورها از رجیستری خصوصی داکر میزبانی خواهد کرد و سرور دوم به‌عنوان سرور Client در نظر گرفته خواهد شد.
  • لازم است روی هر دو سرور داکر را نصب کرده باشید.
  • روی سرور میزبان Docker Compose نصب شده باشد.
  • وب سرور Nginx روی سرور میزبان نصب شده باشد.
  • وب سرور Nginx نصب‌شده روی سرور میزبان، با استفاده از Let’s Encrypt ایمن شده باشد. همچنین، باید مطمئن شوید که تمامی ترافیک HTTP روی HTTPS ری‌دایرکت شده باشند.
  • دامنه‌ای ثبت‌شده که مالکیت و مدیریت آن را در دست دارید.

گام اول: نصب و پیکربندی Docker Registry

اجرای داکر با استفاده از خط فرمان در مواقعی مفید است که می‌خواهید کانتینر را شروع و از آن استفاده کنید. بااین‌حال، درصورتی‌که استقرارهای بزرگ‌تری دارید که شامل کانتینرهای بیشتر و به‌صورت موازی است، احتمالاً استفاده از این روش برایتان مشکلاتی در پی خواهد داشت.

با استفاده از Docker Compose، فایل .yml ایجاد خواهید کرد تا بتوانید پیکربندی و اطلاعاتی را تنظیم کنید که کانتینرها برای برقراری ارتباط با یکدیگر به آن‌ها نیاز دارند. همچنین، از ابزار Docker Compose برای صدور تمامی دستورها به اجزای سازنده برنامه خود و کنترل گروهی آن‌ها می‌توانید استفاده کنید.

فراموش نکنید که Docker Registry خود اپلیکیشنی با چندین مؤلفه است؛ به‌همین‌دلیل، برای مدیریت ساده‌تر آن از Docker Compose استفاده می‌‎کنیم. برای شروع کار، فایلی با نام docker-compose.yml ایجاد خواهیم کرد که از آن برای تعریف رجیستری و محلی که رجیستری در آن تعریف می‌شود، استفاده خواهیم کرد.

پیکربندی را در دایرکتوری به نام docker-registery و با استفاده از دستور زیر انجام خواهیم داد:

mkdir ~/docker-registry

حالا به این دایرکتوری وارد شوید:

cd ~/docker-registry

درادامه، دایرکتوری دیگری درون این پوشه ایجاد کنید و نام آن را data قرار دهید. این زیرپوشه همان محلی است که رجیستری شما ایمیج‌ها را درون آن ذخیره خواهد کرد:

mkdir data

فایل docker-compose.yml را با استفاده از دستور زیر بسازید و سپس آن را باز کنید:

nano docker-compose.yml

خطوط زیر را به این فایل اضافه کنید. این کدها نمونه‌ای اولیه از Docker Registry را ایجاد خواهند کرد:

version: '3'

services:
  registry:
    image: registry:latest
    ports:
    - "5000:5000"
    environment:
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
    volumes:
      - ./data:/data

اگر کمی دقیق‌تر به این کدها نگاه کنید، درخواهید یافت که در ابتدا، سرویس را با نام Registry نام‌گذاری و بعد از آخرین نسخه، ایمیج آن را روی رجیستری تنظیم کردیم. سپس در قسمت پورت‌ها، پورت 5000 روی هاست را به پورت 5000 کانتینر نگاشت (Map) کردیم. این موضوع به ما امکان می‌دهد تا Request به‌سمت پورت 5000 روی سرور ارسال و آن را به‌سمت رجیستری Forward کنیم.

سپس در قسمت Environment، متغیر REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY را روی /data قرار دادیم و مشخص کردیم که داده‌های خود را باید در چه Volume ذخیره کنیم. بعدازآن نیز در قسمت volumes، دایرکتوری /data را در سیستم فایل Host، به /data در کانتینر نگاشت کردیم که به‌عنوان مسیر عبور رفتار می‌کند. به‌عبارت‌دیگر، dataها در سیستم فایل هاست ذخیره خواهند شد.

فایل را ذخیره کنید و ببندید. حالا با استفاده از دستور زیر، می‌توانید پیکربندی را شروع کنید:

docker compose up

بدین‌ترتیب، کانتینر رجیستری و Dependency‌های مربوط به آن دانلود و Start خواهد شد:

Output
[+] Running 2/2
 ⠿ Network docker-registry_default       Created  0.1s
 ⠿ Container docker-registry-registry-1  Created  0.1s
Attaching to docker-registry-registry-1
docker-registry-registry-1  | time="2022-11-19T14:31:20.40444638Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.16.15 instance.id=4fb8d420-eaf8-4a69-b740-bdc94fa52d91 service=registry version="v2.8.1+unknown"
docker-registry-registry-1  | time="2022-11-19T14:31:20.404960549Z" level=info msg="redis not configured" go.version=go1.16.15 instance.id=4fb8d420-eaf8-4a69-b740-bdc94fa52d91 service=registry version="v2.8.1+unknown"
docker-registry-registry-1  | time="2022-11-19T14:31:20.412312462Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.16.15 instance.id=4fb8d420-eaf8-4a69-b740-bdc94fa52d91 service=registry version="v2.8.1+unknown"
docker-registry-registry-1  | time="2022-11-19T14:31:20.412803878Z" level=info msg="Starting upload purge in 52m0s" go.version=go1.16.15 instance.id=4fb8d420-eaf8-4a69-b740-bdc94fa52d91 service=registry version="v2.8.1+unknown"
docker-registry-registry-1  | time="2022-11-19T14:31:20.41296431Z" level=info msg="listening on [::]:5000" go.version=go1.16.15 instance.id=4fb8d420-eaf8-4a69-b740-bdc94fa52d91 service=registry version="v2.8.1+unknown"
...

آخرین خط خروجی نشان می‌دهد که فرایند با موفقیت آغاز شده و Listening روی پورت 5000 در حال انجام است. برای توقف اجرا می‌توانید از کلیدهای ترکیبی Ctrl+C استفاده کنید.

در این مرحله، توانستیم پیکربندی Docker Compose ایجاد کنیم. در این پیکربندی، یک Docker Registry وجود دارد که به پورت 5000 گوش می‌دهد. در مراحل بعدی، نحوه نشان‌دادن آن در دامنه‌ و احراز هویت آن را نیز خواهید آموخت.

برای آشنایی با آموزش گام‌به‌گام نصب داکر روی اوبونتو مقاله زیر را بخوانید.

نصب داکر روی اوبونتو

گام دوم: راه‌اندازی Port Forwarding وب سرور Nginx

در بخش ابتدایی این مطلب آموزشی و به‌عنوان پیش‌نیاز، گفتیم که باید استفاده از پروتکل HTTPS روی دامنه فعال شده باشد. برای اینکه بتوانید ایمن‌سازی رجیستری داکر را نیز انجام دهید، باید وب سرور Nginx را به‌گونه‌ای پیکربندی کنید تا ترافیک از دامنه شما به کانتینر رجیستری ارسال شود.

شما قبلاً فایل /etc/nginx/sites-available/your_domain که حاوی پیکربندی سرور شماست، تنظیم کرده‌اید. با استفاده از دستور زیر، این فایل را باز کنید تا بتوانید آن را ویرایش کنید:

sudo nano /etc/nginx/sites-available/your_domain

بلوک location را در این فایل پیدا کنید:

...
        location / {
  ...
        }
...

باید به‌گونه‌ای ترافیک را به پورت 5000 ارسال کنید؛ یعنی همان جایی که رجیستری شما به ترافیک ارسال‌شده گوش می‌دهد. همچنین، باید Header‌هایی را به Request ارسال‌شده به رجیستری اضافه کنید که با استفاده از آن‌ها، اطلاعات اضافی را از سرور درباره خود Request ارائه می‌کند. برای این منظور، محتوای بلوک location را با استفاده از کدهای زیر جایگزین کنید:

...
location / {
    # Do not allow connections from docker 1.5 and earlier
    # docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents
    if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) {
      return 404;
    }

    proxy_pass                          http://localhost:5000;
    proxy_set_header  Host              $http_host;   # required for docker client's sake
    proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP
    proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Proto $scheme;
    proxy_read_timeout                  900;
}
...

شرط if در این قطعه کد، مسئولیت بررسی ورژن Docker را بر‌عهده دارد. درصورتی‌که ورژن داکر از 1.5 قدیمی‌تر باشد، خطای 404 بازگردانده می‌شود. بعد از اینکه ویرایش فایل با موفقیت به‌اتمام رسید، تغییرات را ذخیره کنید و فایل را ببندید. برای اِعمال تغییرات، Nginx را با استفاده از دستور زیر مجدداً راه‌اندازی کنید:

sudo systemctl restart nginx

اگر با وارد‌کردن این دستور پیغام خطایی دریافت کردید، تغییرات اضافه‌شده در فایل پیکربندی را مجدداً بررسی کنید. برای بررسی اینکه Nginx به‌درستی ترافیک را به کانتینر رجیستری شما در پورت 5000 ارسال می‌کند یا خیر، این دستور را اجرا کنید:

docker compose up

سپس، آدرس دامنه را در مرورگر وارد و مانند مثال زیر، در انتهای آن عبارت v2 را درج کنید:

https://your_domain/v2

مرورگر شما یک آبجکت JSON خالی را به شما نشان خواهد داد:

{}

در ترمینال خود نیز، باید با خروجی‌ای مانند خروجی زیر روبه‌رو شوید:

utput
docker-registry-registry-1  | time="2022-11-19T14:32:50.082396361Z" level=info msg="response completed" go.version=go1.16.15 http.request.host=your_domain http.request.id=779fe265-1a7c-4a15-8ae4-eeb5fc35de98 http.request.method=GET http.request.remoteaddr=87.116.166.89 http.request.uri="/v2" http.request.useragent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" http.response.contenttype="text/html; charset=utf-8" http.response.duration="162.546µs" http.response.status=301 http.response.written=39
docker-registry-registry-1  | 172.19.0.1 - - [19/Nov/2022:14:32:50 +0000] "GET /v2 HTTP/1.0" 301 39 "" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
docker-registry-registry-1  | 172.19.0.1 - - [19/Nov/2022:14:32:50 +0000] "GET /v2/ HTTP/1.0" 200 2 "" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
docker-registry-registry-1  | time="2022-11-19T14:32:50.132472674Z" level=info msg="response completed" go.version=go1.16.15 http.request.host=your_domain http.request.id=0ffb17f0-c2a0-49d6-94f3-af046cfb96e5 http.request.method=GET http.request.remoteaddr=87.116.166.89 http.request.uri="/v2/" http.request.useragent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" http.response.contenttype="application/json; charset=utf-8" http.response.duration=2.429608ms http.response.status=200 http.response.written=2
docker-registry-registry-1  | 172.19.0.1 - - [19/Nov/2022:14:32:50 +0000] "GET /favicon.ico HTTP/1.0" 404 19 "your_domain/v2/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"

با استفاده از کلیدهای ترکیبی Ctrl+C، اجرای آن را متوقف کنید. حالا که Port Forwarding به‌‌درستی انجام شده است، امنیت رجیستری نیز افزایش خواهد یافت.

گام سوم: تنظیمات مربوط به احراز هویت

وب سرور Nginx به شما امکان می‌دهد تا احراز هویت HTTP را برای وب‌سایت‌هایی که مدیریت می‌کند، تنظیم کنید. استفاده از این روش برای محدود‌کردن دسترسی به رجیستری داکر کاربردی است. برای این منظور، باید فایل احراز هویتی با htpasswd ایجاد و سپس نام کاربری و رمز‌عبور را به آن اضافه کنید. این فایل فرایند احراز هویت را در رجیستری شما فعال خواهد کرد.

با نصب پکیج apache2-utils، می‌توانید ابزار htpasswd را دریافت کنید. برای این منظور از دستور زیر استفاده کنید:

sudo apt install apache2-utils -y

فایل احراز هویت در مسیر ~/docker-registry/auth. ایجاد خواهد شد. با استفاده از دستور زیر، پوشه مدنظر را بسازید:

mkdir ~/docker-registry/auth

سپس وارد آن شوید:

cd ~/docker-registry/auth

اولین کاربر را با استفاده از کد زیر ایجاد کنید. توجه کنید که به‌جای username باید نام کاربری دلخواه خود را قرار دهید. همچنین، فلگ -b موجب استفاده از الگوریتم bcrypt خواهد شد که داکر به آن نیاز دارد:

htpasswd -Bc registry.password username

پس‌ازآن، از شما درخواست می‌شود تا رمز‌عبور خود را نیز وارد کنید. در این‌ صورت، ترکیبی از اعتبارنامه‌ها به registry.password. اضافه خواهد شد. بعد از اینکه فهرست اعتبارنامه‌های موردنیاز ساخته شد، باید فایل docker-compose.yml را ویرایش کنید تا به Docker دستور دهید از فایلی که ایجاد کرده‌اید، برای احراز هویت کاربران استفاده کند. این فایل را با استفاده از دستور زیر باز کنید:

nano ~/docker-registry/docker-compose.yml

خط‌های هایلایت‌شده زیر را به این فایل اضافه کنید:

version: '3'

services:
  registry:
    image: registry:latest
    ports:
    - "5000:5000"
    environment:
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.password
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
    volumes:
      - ./auth:/auth
      - ./data:/data

حالا وقت آن است که ببینید آیا احراز هویت به‌درستی کار می‌کند یا خیر. برای این منظور به دایرکتوری اصلی بروید:

cd ~/docker-registry

درادامه با استفاده از دستور زیر، رجیستری را اجرا کنید:

docker compose up

دامنه خود را در صفحه مرورگر وارد کنید. اگر تمامی مراحل را به‌درستی انجام داده باشید، باید نام کاربری و رمز‌عبور از شما درخواست شود. بعد از وارد‌کردن، شما با صفحه خالی JSON روبرو خواهید شد:

{}

اگر این صفحه در مرورگر به شما نشان داده شد، یعنی شما با موفقیت مراحل احراز هویت را گذرانده‌اید و حالا به رجیستری دسترسی دارید. با استفاده از کلیدهای ترکیبی Ctrl+C، از ترمینال خود خارج شوید.

رجیستری شما در‌حال‌حاضر ایمن است و فقط پس از احراز هویت در‌دسترس خواهد بود. در گام‌های بعدی، خواهید آموخت که چطور رجیستری را پیکربندی کنید تا به‌عنوان فرایند در Background اجرا شود؛ اما در‌عین‌حال در‌قبال شروع خودکار در‌برابر راه‌اندازی مجدد نیز انعطاف داشته باشد.

آموزش راه اندازی داکر رجیستری
راهنمای گام به گام راه اندازی داکر رجیستری در اوبونتو

گام چهارم: راه‌اندازی رجیستری داکر به‌عنوان سرویس

با استفاده از دستور Docker Compose، کانتینر رجیستری با هر‌بار بوت‌شدن سیستم یا بعد از اینکه سیستم به هر دلیل Crash کرد، مجدداً شروع به‌ کار خواهد کرد. فایل docker-compose.yml را باز کنید تا بتوانید آن را ویرایش کنید:

nano docker-compose.yml

کدهای زیر را به بلوک registry اضافه کنید:

...
  registry:
    restart: always
...

حالا می‌توانید رجیستری خود را به‌عنوان فرایندی که در پس‌زمینه اجرا می‌شود، با استفاده از -d تنظیم کنید:

docker compose up -d

اجرای رجیستری در پس‌زمینه به شما امکان خواهد داد تا بتوانید جلسه (Session) SSH را ببندید و این اطمینان را داشته باشید که ترمینال و رجیستری همچنان به فعالیت خود ادامه می‌دهند. باتوجه‌به اینکه ایمیج‌های Docker ممکن است حجم زیادی داشته باشند، در مرحله بعد باید محدودیت اندازه فایلی که Nginx برای آپلود می‌پذیرد، افزایش دهید.

گام پنجم: افزایش اندازه فایل آپلود‌شده در Nginx

قبل از اینکه بتوانید ایمیجی را در رجیستری Push کنید، باید مطمئن شوید که رجیستری شما می‌تواند از فایل‌هایی با حجم زیاد میزبانی کند یا خیر. نباید فراموش کنید محدودیت اندازه فایل‌هایی که Nginx مجوز آپلود آن‌ها را صادر می‌کند، به‌طورپیش‌فرض برابر با ۱ مگابایت است که برای ایمیج‌های داکر کافی نیست. برای افزایش سقف این محدودیت، باید فایل پیکربندی اصلی Nginx را که در مسیر /etc/nginx/nginx.conf قرار دارد، ویرایش کنید.

برای این منظور، این فایل را با استفاده از دستور زیر باز کنید:

sudo nano /etc/nginx/nginx.conf

در قسمت http، خط هایلایت‌شده را اضافه کنید:

...
http {
        client_max_body_size 16384m;
        ...
}
...

همان‌طور‌که مشخص است، پارامتر client_max_body_size حالا روی ۱۶,۳۸۴ مگابایت (برابر با ۱۶ گیگابایت) تنظیم شده است. بعد از اِعمال تغییرات، فایل را ذخیره کنید و ببندید. سپس برای اِعمال تغییرات پیکربندی، Nginx را مجدداً راه‌اندازی کنید:

sudo systemctl restart nginx

حالا می‌توانید با خیال راحت و بدون اینکه Nginx دچار خطا شود، ایمیج‌های حجیم خود را در رجیستری داکر خود آپلود کنید.

برای آشنایی با ویژگی‌های، مزیت‌ها، معایب، عملکرد و اجزای داکر مقاله زیر را بخوانید.

داکر چیست؟

گام ششم: انتشار در رجیستری خصوصی

تا این مرحله سرور Docker Registry شما در حال اجراست و فایل‌های بزرگ را هم می‌پذیرد؛ بنابراین، می‌توانید ایمیج‌های خود را روی آن Push کنید. باتوجه‌به اینکه احتمالاً ایمیجی برای بررسی صحت عملکرد سرور در‌دسترس شما نیست، از ایمیج اوبونتو در Docker Hub برای این منظور استفاده خواهیم کرد.

در Session جدید در ترمینال، برای کلاینت سرور خود از دستور زیر استفاده کنید. این دستور برای دانلود و اجرا و دسترسی به پوسته ایمیج اوبونتو کاربردی است:

docker run -t -i ubuntu /bin/bash

سپس با استفاده از دستور زیر، فایلی با نام SUCCESS ایجاد کنید:

touch /SUCCESS

با ایجاد این فایل، کانتینر خود را سفارشی کرده‌اید. با دستور زیر از پوسته کانتینر خود خارج شوید:

exit

حالا ایمیجی جدید از کانتینری که به‌تازگی آن را سفارشی کرده‌اید، ایجاد کنید:

docker commit $(docker ps -lq) test-image

با این دستور، ایمیج جدید به‌صورت Local در‌دسترس شما قرار خواهد گرفت. حالا باید آن را در رجیستری کانتینر خود Push کنید. برای این منظور، ابتدا لازم است تا Login کنید:

docker login https://your_domain

در‌ادامه از شما خواسته می‌شود تا نام کاربری و رمز‌عبور خود را وارد کنید. بعد از انجام این کار، خروجی به‌صورت زیر خواهد بود:

Output
...
Login Succeeded

بعد از ورود، نام ایمیج ایجاد‌شده را تغییر دهید:

docker tag test-image your_domain/test-image

در‌نهایت ایمیج جدید را در رجیستری خود Push کنید:

docker push your_domain/test-image

در این‌ صورت، با خروجی زیر یا مشابه آن روبه‌رو خواهید شد:

Output
Using default tag: latest
The push refers to a repository [your_domain/test-image]
1cf9c9034825: Pushed
f4a670ac65b6: Pushed
latest: digest: sha256:95112d0af51e5470d74ead77932954baca3053e04d201ac4639bdf46d5cd515b size: 736

گام هفتم: Pull گرفتن از رجیستری خصوصی داکر

برای Pull گرفتن از رجیستری خصوصی، ابتدا با استفاده از نام کاربری و رمز‌عبور خود، در سرور اصلی Login کنید:

docker login https://your_domain

سپس، از دستور test-image به‌صورت زیر استفاده کنید:

docker pull your_domain/test-image

بدین‌ترتیب، داکر ایمیج را دانلود خواهد کرد. با استفاده از دستور زیر، کانتینر را اجرا کنید:

docker run -it your_domain/test-image /bin/bash

این دستور Shell کانتینر را اجرا خواهد کرد. حالا فهرستی از فایل‌ها ایجاد کنید:

ls

این فهرست فایل SUCCESS را نیز شامل می‌شود که خودتان آن را ایجاد کرده‌اید؛ بنابراین، می‌توان اطمینان پیدا کرد که این کانتینر از همان ایمیجی که ایجاد کرده‌اید، استفاده می‌کند:

SUCCESS  bin  boot  dev  etc  home  lib  lib64  media   mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

حالا با استفاده از دستور exit، از Shell کانتینر خارج شوید:

exit

جمع‌بندی

استفاده از رجیستری خصوصی داکر، از یک طرف به شما کمک می‌کند تا فرایند تولید ایمیج‌ها را با سرعت بیشتری انجام دهید و در وقتتان صرفه‌جویی کنید و از طرف دیگر باعث امنیت ایمیج‌های شما خواهد شد؛ زیرا برای دسترسی به آن‌ها لزوماً باید به سرور Login کرد. در این مقاله از بلاگ پارس پک، نحوه راه‌اندازی رجیستری خصوصی داکر را در سیستم‌عامل اوبونتو 22.04 به‌طورکامل به شما آموزش داده‌ایم.

سؤالات متداول

۱. استفاده از رجیستری خصوصی چه مزایایی دارد؟

در بسیاری از مواقع، نمی‌خواهید ایمیج‌های خود را روی رجیستری عمومی مانند Docker Hub قرار دهید. در این‌ صورت، استفاده از رجیستری خصوصی امنیت ایمیج‌های شما را تضمین خواهد کرد.

۲. آیا اندازه ایمیج‌های آپلود‌شده در Nginx محدودیت دارد؟

بله، اندازه پیش‌فرض آپلود در Nginx یک مگابایت است. بااین‌حال، این مقدار را با استفاده از client_max_body_size می‌توان تغییر داد. در مقاله حاضر، نحوه انجام این کار را کاملاً توضیح داده‌ایم.

۳. TravisCI چیست؟

TravisCI یکی از ابزارهای قدرتمندی است که از آن برای خودکارسازی فرایند Push مستقیم به رجیستری خصوصی استفاده می‌شود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


ارسال دیدگاه در وبلاگ پارس‌پک را مطالعه کرده و آن‌ها را می‌پذیرم.