در CoreOS ، رجیستری خود را تنظیم کنید

همه ما Docker را می شناسیم و دوست داریم ، سکویی برای ایجاد ، مدیریت و توزیع ظروف برنامه در دستگاه های مختلف. شرکت Docker خدماتی را برای میزبانی ظروف منبع آزاد برای بارگیری (یا کشیدن) مانند یک مخزن git که به عنوان "Docker Registry" شناخته می شود ، بارگیری می کند. مانند ظروف GitHub برای ظروف داکر فکر کنید.

اما اگر می خواهید میزبان رجیستری خودتان جدا از عمومی باشید؟ خوب ، شرکت Docker برنامه رجیستری خود را در GitHub باز کرده است.

این آموزش هر چند روند تنظیم رجیستری داکر خصوصی را با استفاده از CoreOS روی یک VPS جدید انجام می دهد.

CoreOS + داکر

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

این باعث می شود سیستم عامل اصلی به سیستم میزبان کاملی برای داکر تبدیل شود!

کشیدن و اجرای آخرین رجیستری

شرکت Docker رجیستری را به عنوان تصویر سطح بالا ارائه کرده است ، این بدان معنی است که می توانیم با ساده ساده آن را بکشیم:

docker pull registry

این بسته به سرعت اتصال ممکن است چند دقیقه طول بکشد.

علاوه بر اینکه یک تصویر سطح بالا است همچنین به معنای پشتیبانی و به روزرسانی منظم است.

حالا بیایید رجیستری را امتحان کنیم. ما می توانیم با استفاده از تصویر رجیستری یک ظرف جدید ایجاد کنیم:

docker run -p 5000:5000 -d --name=basic_registry registry

برای کسانی که زیاد از داکر استفاده نکرده اند ، -pپرچم مخفف است PORT، به این معنی که ما در حال قرار دادن بندر 5000 از ظرف در بندر 5000 میزبان هستیم.

-dپرچم مخفف daemon، این باعث خواهد شد که ظرف به ظرف در پس زمینه اجرا و خروجی به جلسه SSH فعلی را چاپ کنید، ما همچنین می خواهم به نام این ظرف آزمون اساسی با استفاده از --nameگزینه به طوری که ما به راحتی می توانید آن را به بعد را مدیریت کند.

اطمینان حاصل کنید که ظرف اصلی رجیستری شما با استفاده از کار می کند docker ps. خروجی باید شبیه به:

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
edfb54e4a8c4        registry:0.8.1      "/bin/sh -c 'exec do   7 seconds ago       Up 6 seconds        0.0.0.0:5000->5000/tcp   basic_registry

همچنین ، از http://YOUR_IP:5000مرورگر وب خود بازدید کنید و باید پیامی مانند زیر دریافت کنید:

"docker-registry server (dev) (v0.8.1)"

توجه کنید که این کلمه devدر پرانتز است. این بدان معنی است که سرور در حال حاضر پیکربندی dev را اجرا می کند. به زودی پیکربندی بیشتری را بررسی خواهیم کرد.

اکنون شما رجیستری کانتینر (بسیار اساسی) خود را در حال اجرا دارید! اما ما هنوز تمام نشده ایم

شاید بخواهید این ویژگی را از چشمان کنجکاو حفظ نکنید ، یا شاید تصاویر خود را به جای فضای محلی در آمازون S3 ذخیره کنید. بیایید در بخش های بعدی گزینه های مختلف پیکربندی را مرور کنیم.

قبل از حرکت ، بیایید ظرف آزمایش را بکشیم تا در بنادر متناقض کار نکنیم.

docker kill basic_registry

پیکربندی رجیستری

دو روش وجود دارد که می توانیم پیکربندی را به Docker Registry منتقل کنیم. یک روش با انتقال متغیرهای محیط به یک ظرف جدید است و روش دیگر اضافه کردن پرونده پیکربندی است.

در اینجا چند مورد از گزینه های پیکربندی رایج استفاده خواهیم کرد:

  • loglevel- حداقل اطلاعات برای ورود به کنسول. پیش فرض است info.
  • standalone- آیا باید این رجیستری به تنهایی عمل کند؟ (هرگز از ثبت احوال پرس و جو نکنید.) پیش فرض است true.
  • index_endpoint- اگر مستقل نباشد ، از چه شاخص دیگری پرس و جو خواهیم کرد؟ پیش فرض index.docker.io.
  • cacheو cache_lru- گزینه های مربوط به استفاده از حافظه پنهان Redis برای پرونده های کوچک ، ما بعداً به این موضوع خواهیم پرداخت.
  • storage- برای این سرور از چه پس زمینه ذخیره ای باید استفاده کنیم؟ (در این آموزش از محلی استفاده خواهیم کرد).
  • storage_path - در صورت استفاده از فضای محلی ، از چه دایرکتوری برای نگه داشتن پرونده ها باید استفاده کنیم؟

قبل از کار با پیکربندی ، به یک فایل پایه نیاز داریم تا با آن کار کنیم. پرونده موجود در مخزن ثبت نام Docker در GitHub درست کار خواهد کرد:

wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml

فایل با موفقیت با خروجی مانند:

2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]

عالی! اکنون می توانیم این پرونده را متناسب با نیازه��ی خود تغییر دهیم.

تنها ویرایشگر متن که همراه با سیستم عامل اصلی است vim، اما نگران نباشید اگر قبلاً از آن استفاده نکرده اید ، این مرحله به مرحله توضیح می دهد که چه چیزی را ویرایش کنید و چگونه آن را انجام دهید.

vim config_sample.yml

پس از باز کردن پرونده ، به Iگوشه و گوشه سمت راست پایین نمایش دهید: -- INSERT --برای حالت درج. با استفاده از کلیدهای پیکان خود ، تمام راه را به انتهای پرونده بروید ، باید یک بخش دارای برچسب را ببینید prod.

ما دو خط را تغییر خواهیم داد ، تغییرات زیر است

prod:
    <<: *local
    storage_path: _env:STORAGE_PATH:/data

کاری که ما انجام داده ایم این است که prodپیکربندی را تغییر دهیم تا از localبخش به جای بخش استفاده کنیم s3. سپس ما را storage_pathبرای استفاده از مسیر /dataداخل ظرف جدید رونویسی می کنیم.

پس از تأیید صحیح بودن همه تغییرات ، روی ESCحالت و نوع وارد شوید :wq(به این معنی است که تغییرات را در پرونده بنویسید و از vim خارج شوید).

حالا بیایید پرونده را به صورت ساده تغییر دهیم config.yml

mv config_sample.yml config.yml

ذخیره سازی مجدد (اختیاری)

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

ابتدا تصویر سطح بالای Redis را بکشید:

docker pull redis

پس از کشیدن تصویر با موفقیت ، می توانیم آنرا اجرا کنیم و درست مثل آنچه که با رجیستری آزمون انجام دادیم ، آن را اجرا کنیم:

docker run -d --name registry-redis redis

از آنجا که redis در حافظه است ، دیگر لازم نیست پیکربندی لازم را انجام دهیم ، زیرا در مراحل بعدی آن را به ظرف رجیستری پیوند خواهیم داد.

یک بار دیگر ، با استفاده از docker ps:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
54f65641eccf        redis:2.8           "redis-server"      2 seconds ago       Up 1 seconds        6379/tcp            registry-redis

اکنون دوباره باز کردن config.ymlدر vimو وارد درج حالت درست مثل اولین بار که ما آن را ویرایش کنید.

خطوط زیر را در زیر prodبخش اضافه کنید ، مطمئناً به درستی تورفتگی می کنید. این بار فقط اضافه می کنیم cacheو cache_lru.

cache:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 0

cache_lru:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 1

متغیرهای محیط REDIS_PORT_6379_TCP_ADDRو REDIS_PORT_6379_TCP_PORTبا پیوند با ظرف Redis به ظرف رجیستری منتقل می شوند.

با این کار ، اکنون یک کانتینر Redis نصب کرده اید که به صورت دستی با ظرف رجیستری شما کار خواهد کرد. اکنون بر روی ساخت رجیستری!

ساخت ظرف

همه تنظیمات تنظیم شده و آماده داریم ، اکنون باید ظرف رجیستری واقعی را بسازیم.

آتش vim Dockerfileبسازید تا یک Dockerfile جدید ایجاد کنید. حالت insert را وارد کنید و ویرایش های زیر را دنبال کنید.

FROM registry:latest

# Add the custom configuration file we made 
ADD ./config.yml /docker-registry/config/config.yml

# Create the data directory
RUN mkdir /data

# Set the configuration file to config.yml
env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml

# Make sure we use the prod configuration settings 
env SETTINGS_FLAVOR prod

آنچه ما در بالا انجام دادیم این است که در اصل تصویر رجیستری را گسترش می دهیم بنابراین از پرونده و تنظیمات پیکربندی ما استفاده می کند. Dockerfile مجموعه ای از دستورالعمل های ساخت برای خواندن و ساخت Docker است. اگر می خواهید درباره Dockerfiles و نحو آنها بیشتر بدانید ، به اسناد رسمی سایت Docker نگاهی بیندازید.

در مرحله بعد باید ظرف را برای استفاده بسازیم.

docker build -t my_registry .


Sending build context to Docker daemon 13.82 kB
Sending build context to Docker daemon 
Step 0 : FROM registry
 ---> e42d15ec8417
Step 1 : ADD ./config.yml /docker-registry/config/config.yml
 ---> 4339f026d459
Removing intermediate container 2d5138fbcd34
Step 2 : RUN mkdir /data
 ---> Running in a090f0bdbfd1
 ---> 8eb27ba6e12a
Removing intermediate container a090f0bdbfd1
Step 3 : env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
 ---> Running in 565b5bfb2b22
 ---> 914462e46dc0
Removing intermediate container 565b5bfb2b22
Step 4 : env SETTINGS_FLAVOR prod
 ---> Running in 31a92847b851
 ---> b5949575c374
Removing intermediate container 31a92847b851
Successfully built b5949575c374

حالا ما آماده اجرا هستیم!

بیایید یک دایرکتوری در سیستم میزبان خود بسازیم تا در /dataحجم آن در ظرف قرار گیرد .

mkdir registry-data

حالا می توانیم ظرف جدیدی بچرخیم. اگر قصد استفاده از حافظه نهان Redis را دارید ، از دستور 2 در زیر استفاده کنید.

# For a non-Redis cache registry
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg my_registry

# For a Redis cached registry (Must have followed Redis Caching section above)
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg --link registry-redis:redis my_registry

برای اطمینان از عملکرد صحیح سرور خود ، به این قسمت مراجعه کنید http://YOUR_IP:5000. پیام زیر را مشاهده خواهید کرد:

"docker-registry server (prod) (v0.8.1)"

به (prod)معنای موفقیت در تغییرات پیکربندی ما توجه کنید !

مشتری Docker محلی خود را پیکربندی کنید

اکنون که ما رجیستری در حال اجرا داریم ، می خواهیم مشتری داکر در دستگاههای محلی ما شروع به استفاده از آن کند. معمولاً از این دستور استفاده می کنید: docker loginاما برای استفاده ما باید یک آرگومان دیگر به فرمان ورود اضافه کنیم:

docker login YOUR_IP:5000

نام کاربری و رمز ورود خود را وارد کنید (مانند ساختن یک حساب کاربری جدید فکر کنید) و پیامی را که می گوید باید آن را فعال کنید نادیده بگیرید.

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

# Pull the busybox image from the public registry
docker pull busybox

# Tag it with our IP/URL
docker tag busybox YOUR_IP:5000/busybox

# Push it to our newly made registry
docker push YOUR_IP:5000/busybox

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

Pushing tag for rev [a9eb17255234] on 

تبریک می گویم! مخزن docker بسیار شخصی خود را تنظیم کرده اید.

بعد چی؟

در اینجا چند ایده در مورد چگونگی بهبود رجیستری خصوصی جدید شما آورده شده است:

  • پروکسی معکوس با استفاده از Nginx یا Apache برای قرار دادن امنیت اضافی در مقابل آن ، مانند auth HTTP ساده.
  • یک دامنه برای سرور خود بدست آورید و آن را راه‌اندازی کنید تا با دسترسی به رجیستری خود با چیزی مانند: regjist.mysite.com دسترسی پیدا کنید
  • اگر ظروف شما حاوی اطلاعات حساس هستند ، یک گواهی SSL خریداری کنید (یا خود علامت بزنید) تا محافظت بیشتری نیز داشته باشید.


Leave a Comment

Kubernetes With Kubeadm را در CentOS 7 مستقر کنید

Kubernetes With Kubeadm را در CentOS 7 مستقر کنید

بررسی اجمالی این مقاله به شما کمک می کند تا در هر زمان خوشه ای از Kubernetes را جمع کنید و با kubeadm در حال اجرا باشید. در این راهنما از دو سرور استفاده می شود

Docker CE را در اوبونتو 18.04 نصب کنید

Docker CE را در اوبونتو 18.04 نصب کنید

مقدمه Docker برنامه ای است که به ما امکان می دهد برنامه هایی را که به صورت ظروف اجرا می شوند مستقر کنیم. این متن با زبان محبوب برنامه نویسی Go نوشته شده است

نصب Docker در CentOS 7

نصب Docker در CentOS 7

با استفاده از یک سیستم متفاوت؟ Docker برنامه ای است که امکان استقرار نرم افزار در ظروف مجازی را فراهم می آورد. در برنامه نویسی Go نوشته شده است

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

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

با استفاده از یک سیستم متفاوت؟ مقدمه Rancher یک بستر منبع باز برای اجرای ظروف و ساخت سرویس کانتینر خصوصی است. رانچر پایه است

با استفاده از Docker-compose یک برنامه PHP مستقر کنید

با استفاده از Docker-compose یک برنامه PHP مستقر کنید

برنامه های PHP معمولاً توسط یک سرور ، یک سیستم پایگاه داده رابطه و خود مفسر زبان تشکیل می شوند. در این آموزش leveragin خواهیم بود

نصب docker-compose در CoreOS

نصب docker-compose در CoreOS

در این مقاله نحوه نصب docker-compose در CoreOS توضیح داده شده است. در CoreOS ، پوشه / usr / تغییر ناپذیر است بنابراین مسیر استاندارد / usr / local / bin در دسترس نیست

Rancher را روی CentOS 7 نصب کنید

Rancher را روی CentOS 7 نصب کنید

با استفاده از یک سیستم متفاوت؟ مقدمه Rancher یک بستر منبع باز برای اجرای ظروف و ساخت سرویس کانتینر خصوصی است. رانچر پایه است

Sentry Sentry را از طریق Docker در اوبونتو 16.04 تنظیم کنید

Sentry Sentry را از طریق Docker در اوبونتو 16.04 تنظیم کنید

با استفاده از یک سیستم متفاوت؟ مقدمه Sentry یک راه حل منبع باز برای ردیابی خطا است. Sentry استثنائات و سایر پیام های مفید را از این طریق دنبال می کند

ایجاد یک Darmer Swarm در Alpine Linux 3.9.0

ایجاد یک Darmer Swarm در Alpine Linux 3.9.0

مقدمه این راهنما نحوه ایجاد و پیکربندی ازدحام Docker را با استفاده از چندین سرور Alpine Linux 3.9.0 و Portainer به شما نشان می دهد. لطفا آگاه باشید

جلسه مهم با Docker Swarm (CE) در Debian 9

جلسه مهم با Docker Swarm (CE) در Debian 9

با استفاده از یک سیستم متفاوت؟ مقدمه Docker Swarm سرورهای شخصی شما را به گروهی از رایانه ها تبدیل می کند. تسهیل مقیاس پذیری ، در دسترس بودن بالا

جلسه Sticky With Docker Swarm (CE) در CentOS 7

جلسه Sticky With Docker Swarm (CE) در CentOS 7

با استفاده از یک سیستم متفاوت؟ مقدمه Docker Swarm سرورهای فردی شما را به مجموعه ای از رایانه ها تبدیل می کند و باعث می شود مقیاس پذیری و در دسترس بودن بالا را تسهیل کند

دو ابزار مدیریت گرافیکی Docker: DockerUI و Shipyard

دو ابزار مدیریت گرافیکی Docker: DockerUI و Shipyard

با کمک برنامه Vultr Docker ، به راحتی می توانید Docker را به عنوان نمونه سرور Vultr خود مستقر کنید. در ضمن ، می توانید وظیفه مدیریت داکر را تسهیل کنید

نحوه نصب Harbour در CentOS 7

نحوه نصب Harbour در CentOS 7

Harbour یک سرور رجیستری کلاس سازمانی منبع باز است که تصاویر Docker را ذخیره و توزیع می کند. بندرگاه منبع باز Docker Distribution b را گسترش می دهد

سرور Rancher را روی RancherOS نصب کنید

سرور Rancher را روی RancherOS نصب کنید

بررسی اجمالی RancherOS یک سیستم عامل فوق العاده سبک (فقط حدود 60 مگابایت) است که برای اجرای سرویس های سیستم ، یک Demoner سیستم Docker به عنوان PID 0 را اجرا می کند.

با خیال راحت ظروف LXC را در Ubuntu 14.04 مستقر و مدیریت کنید

با خیال راحت ظروف LXC را در Ubuntu 14.04 مستقر و مدیریت کنید

ظروف LXC (ظروف لینوکس) یک ویژگی سیستم عامل در لینوکس است که می تواند برای اجرای چندین سیستم جدا شده لینوکس روی یک هاست واحد مورد استفاده قرار گیرد. اینها

شروع کار با Kubernetes در CentOS 7

شروع کار با Kubernetes در CentOS 7

Kubernetes یک سیستم عامل منبع باز است که توسط Google برای مدیریت برنامه های کانتینر شده در سرتاسر گروههای سرور ساخته شده است. این بنا بر روی یک دهه ساخته می شود و

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

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

در این آموزش اصول اولیه کار با داکر توضیح داده شده است. فرض می کنم شما قبلاً داکر نصب کرده اید. مراحل این آموزش روی آن کار خواهد کرد

بار را با Docker بارگذاری کنید

بار را با Docker بارگذاری کنید

هنگام اجرای یک برنامه وب ، شما معمولاً می خواهید بدون استفاده از نرم افزار خود برای استفاده از multithreading o از منابع خود استفاده کنید.

با SQL Server 2017 (MS-SQL) در CentOS 7 With Docker شروع کنید

با SQL Server 2017 (MS-SQL) در CentOS 7 With Docker شروع کنید

پیش نیاز موتور داکر 1.8+. حداقل 4 گیگابایت فضای دیسک. حداقل 4 گیگابایت رم. مرحله 1. نصب Docker به منظور نصب SQL-Server ، Docker mus

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

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

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

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

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد