На CoreOS настройте свой собствен регистър на Docker

На CoreOS настройте свой собствен регистър на Docker

Всички познаваме и обичаме Docker, платформа за създаване, управление и разпространение на контейнери за приложения на множество машини. Docker Inc. предоставя услуга за хостване на контейнери с отворен код, които да бъдат изтегляни (или изтегляни) като git хранилище, известно като „Регистър на Docker“. Мислете за него като за GitHub за Docker контейнери.

Но какво ще стане, ако искате да хоствате свой собствен регистър, отделен от публичния? Е, Docker Inc. е с отворен код своето приложение за регистър на GitHub.

Този урок ще ви преведе през процеса на настройка на частен регистър на Docker с помощта на CoreOS на нов VPS.

CoreOS + Docker

Няма да прекарваме много време в разглеждане какво точно могат да направят Docker и CoreOS, тъй като това е извън обхвата на този урок. По същество CoreOS е проектиран за масивни сървърни клъстери, той е малък, бърз и получава редовни актуализации на сигурността автоматично. Неговата основна файлова система също е само за четене, което означава, че трябва да използвате Docker, за да стартирате всякакъв вид софтуер, който не е включен в базовата инсталация.

Това прави Core OS перфектна хост система за Docker!

Изтегляне и стартиране на най-новия регистър

Docker Inc. предостави системния регистър като изображение от най-високо ниво, това означава, че можем да го свалим надолу с просто:

docker pull registry

This can take a few minutes depending on the connection speed.

Плюс това, че е изображение от най-високо ниво, също означава, че получава редовна поддръжка и актуализации.

Сега нека тестваме регистъра. Можем да създадем нов контейнер с помощта на изображението на системния регистър:

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

За тези, които не са използвали твърде много Docker, -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)"

Notice the word dev in the parenthesis. This means that the server is currently running the dev config. We'll look over more configuration soon.

Вече имате свой собствен (много основен) регистър на контейнери! Но още не сме готови.

Може би искате да запазите това поверително от любопитни очи или може би да съхранявате вашите изображения на Amazon S3 вместо в локално хранилище. Нека разгледаме различните опции за конфигурация в следващия раздел.

Преди да продължим, нека убием тестовия контейнер, за да не се сблъскаме с конфликтни портове.

docker kill basic_registry

Конфигурация на системния регистър

Има два начина, по които можем да предадем конфигурация в регистъра на Docker. Единият начин е чрез предаване на променливи на средата към нов контейнер, а другият е да добавите конфигурационен файл.

Ето няколко от често срещаните опции за конфигурация, които ще използваме:

  • loglevel- Минималното количество информация за влизане в конзолата. По подразбиране е info.
  • standalone- Трябва ли този регистър да действа самостоятелно? (Никога не прави заявки в публичния регистър.) По подразбиране е true.
  • index_endpoint- Ако не е самостоятелен, какъв друг индекс ще потърсим? по подразбиране index.docker.io.
  • cacheи cache_lru- Опции, отнасящи се до използването на Redis кеш за малки файлове, ще се докоснем до това по-късно.
  • storage- Какъв бекенд за съхранение трябва да използваме за този сървър? (В този урок ще използваме local).
  • storage_path - Ако използваме локално хранилище, коя директория трябва да използваме, за да съхраняваме файлове?

Преди да започнем работа с конфигурацията, се нуждаем от основен файл, с който да работим. Файлът от хранилището на Docker Registry на 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]

Страхотен! Сега можем да модифицираме този файл, за да отговаря на нашите нужди.

Единственият текстов редактор, който идва с Core OS, е 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.)

Сега нека преименуваме файла на just config.yml

mv config_sample.yml config.yml

Кеширане на Redis (по избор)

Ако искате да използвате redis, за да ускорите вашия регистър на контейнерите, това е толкова просто, колкото да изтеглите нов контейнер от публичния регистър и да добавите още няколко реда конфигурация.

Първо издърпайте изображението от най-високо ниво на 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.ymlin 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. Влезте в режим на вмъкване и следвайте редакциите по-долу.

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 на нашите локални машини да започне да го използва. Обикновено бихте използвали командата: docker login, но за нашата употреба трябва да добавим още един аргумент към командата 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, за да поставите допълнителна защита пред него, като обикновено HTTP удостоверяване.
  • Вземете домейн за вашия сървър и го настройте, така че да имате достъп до регистъра си с нещо като: registry.mysite.com
  • Купете (или сами подпишете) SSL сертификат, за да добавите още повече защита, ако контейнерите ви съдържат чувствителна информация.

Ето как да проверите Hyper-V контейнерите в Windows 10 Insider

Ето как да проверите Hyper-V контейнерите в Windows 10 Insider

Microsoft обясни в нова публикация в блога как Windows Insiders могат да тестват Hyper-V контейнери на Windows 10, ново решение за виртуализация, което позволява на приложенията да работят, без да засягат останалата част от вашата операционна система.

Как да инсталирате Harbor на CentOS 7

Как да инсталирате Harbor на CentOS 7

Harbor е регистър на сървър от корпоративен клас с отворен код, който съхранява и разпространява изображения на Docker. Harbour разширява Docker Distribution с отворен код b

Инсталирайте Rancher OS чрез iPXE

Инсталирайте Rancher OS чрез iPXE

Rancher OS е много лека Linux дистрибуция, изградена около Docker. Самата ОС тежи около 20MB. Този урок ще ви накара да работите с него

На CoreOS настройте свой собствен регистър на Docker

На CoreOS настройте свой собствен регистър на Docker

Всички познаваме и обичаме Docker, платформа за създаване, управление и разпространение на контейнери за приложения на множество машини. Docker Inc. предоставя услуга t

Инсталиране на docker-compose на CoreOS

Инсталиране на docker-compose на CoreOS

Тази статия обяснява как да инсталирате docker-compose на CoreOS. В CoreOS папката /usr/ е неизменна, така че стандартният път /usr/local/bin е недостъпен за

Инсталирайте Rancher на CentOS 7

Инсталирайте Rancher на CentOS 7

Използване на различна система? Въведение Rancher е платформа с отворен код за управление на контейнери и изграждане на частна услуга за контейнери. Rancher е база

Инсталирайте Docker CE на Ubuntu 18.04

Инсталирайте Docker CE на Ubuntu 18.04

Въведение Docker е приложение, което ни позволява да разгръщаме програми, които се изпълняват като контейнери. Той е написан на популярния език за програмиране Go

Създайте Docker Swarm на Alpine Linux 3.9.0

Създайте Docker Swarm на Alpine Linux 3.9.0

Въведение Това ръководство ще ви покаже как да създадете и конфигурирате Docker рояк, използвайки множество Alpine Linux 3.9.0 сървъри и Portainer. Моля, имайте предвид, че

Разгръщане на PHP приложение с помощта на Docker-compose

Разгръщане на PHP приложение с помощта на Docker-compose

PHP приложенията обикновено се съставят от уеб сървър, система за релационна база данни и самия езиков интерпретатор. В този урок ще бъдем лостове

Баланс на натоварването с Docker

Баланс на натоварването с Docker

Когато изпълнявате уеб приложение, обикновено искате да извлечете максимума от ресурсите си, без да се налага да конвертирате софтуера си за използване на многонишков

Разгръщане на приложение Node.js с помощта на Docker

Разгръщане на приложение Node.js с помощта на Docker

Тази статия ще ви покаже как да разположите вашето приложение Node в Docker контейнер. Забележка: Този урок предполага, че имате инсталиран и прочетен Docker

Инсталиране на Docker CE на CentOS 7

Инсталиране на Docker CE на CentOS 7

Docker контейнерната технология ви позволява да стартирате приложения в специфична и изолирана среда. Docker Community Edition (CE) е новото име за fre

Внедряване на Kubernetes с Kubeadm на CentOS 7

Внедряване на Kubernetes с Kubeadm на CentOS 7

Общ преглед Тази статия има за цел да ви помогне да стартирате и стартирате Kubernetes клъстер с kubeadm за нула време. Това ръководство ще разгръща два сървъра на

Инсталиране на Docker на CentOS 7

Инсталиране на Docker на CentOS 7

Използване на разл��чна система? Docker е приложение, което позволява внедряване на софтуер във виртуални контейнери. Написано е в програмата Go

Инсталиране на Docker CE на Debian 9

Инсталиране на Docker CE на Debian 9

Използване на различна система? Въведение Docker е приложение, което позволява внедряване на софтуер във виртуални контейнери. Беше написано в Г

Започнете със SQL Server 2017 (MS-SQL) на CentOS 7 с Docker

Започнете със SQL Server 2017 (MS-SQL) на CentOS 7 с Docker

Предпоставки Docker engine 1.8+. Минимум 4GB дисково пространство. Минимум 4GB RAM. Стъпка 1. Инсталирайте Docker За да инсталирате SQL-Server, Docker трябва

Залепваща сесия с Docker Swarm (CE) на Debian 9

Залепваща сесия с Docker Swarm (CE) на Debian 9

Използване на различна система? Въведение Docker Swarm превръща вашите отделни сървъри в клъстер от компютри; улесняване на мащабирането, висока достъпност

Два инструмента за графично управление на Docker: DockerUI и корабостроителница

Два инструмента за графично управление на Docker: DockerUI и корабостроителница

С помощта на приложението Vultr Docker можете лесно да разположите Docker на вашия сървър на Vultr. Междувременно можете да улесните задачата за управление на Docker

Инсталирайте Rancher Server на RancherOS

Инсталирайте Rancher Server на RancherOS

Общ преглед RancherOS е невероятно лека операционна система (само около 60 MB), която изпълнява системен Docker демон като PID 0 за стартиране на системни услуги

Първи стъпки с Kubernetes на CentOS 7

Първи стъпки с Kubernetes на CentOS 7

Kubernetes е платформа с отворен код, разработена от Google за управление на контейнерни приложения в клъстер от сървъри. Тя се основава на едно десетилетие и

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече