در 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

نحوه نصب بستر سبد خرید 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 است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد