[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/docker-private-registry":3,"mdc-4r0td1-key":861,"mdc--aft827-key":879,"mdc-stjres-key":887,"mdc-33vztu-key":912,"mdc-3eaxdg-key":936,"mdc-tqvhdx-key":978,"mdc-26pjps-key":1009,"mdc-14s1jv-key":1041,"mdc-eznr8u-key":1058,"related-/guides/linux/docker-install,/guides/linux/docker-images-management,/guides/linux/docker-compose":1090},{"id":4,"title":5,"appliesTo":6,"author":12,"body":13,"canonical":792,"code":792,"createdAt":793,"description":794,"difficulty":795,"draft":796,"estimatedTime":797,"extension":798,"faq":799,"howToSteps":812,"howToTotalTime":828,"image":792,"keywords":829,"locale":838,"meta":839,"navigation":840,"path":841,"platform":842,"related":843,"section":847,"seo":848,"severity":792,"stem":849,"summary":850,"tags":851,"twitterCreator":792,"twitterSite":792,"type":859,"updatedAt":793,"__hash__":860},"content_ru/guides/linux/docker-private-registry.md","Настройка приватного Docker Registry на Linux: пошаговое руководство",[7,8,9,10,11],"Ubuntu 20.04","Ubuntu 22.04","Debian 11","CentOS 8","Fedora 35","FixPedia Team",{"type":14,"value":15,"toc":779},"minimark",[16,21,30,34,80,84,89,92,129,132,149,152,165,169,172,190,193,254,257,272,276,279,309,316,346,349,427,441,445,448,511,514,616,625,629,632,647,650,687,690,708,711,715,729,733,772,775],[17,18,20],"h2",{"id":19},"введение","Введение",[22,23,24,25,29],"p",{},"Приватный Docker Registry позволяет хранить ваши Docker-образы внутри корпоративной сети или облака, сохраняя конфиденциальность и ускоряя доставку. В этом руководстве показано, как быстро развернуть легковесный реестр на базе образа ",[26,27,28],"code",{},"registry:2"," на серверах под управлением Linux, защитить его паролями и опционально настроить TLS.",[17,31,33],{"id":32},"требования","Требования",[35,36,37,41,48,51,62],"ul",{},[38,39,40],"li",{},"Система под управлением Linux (Ubuntu 20.04+, Debian 11, CentOS 8, Fedora 35).",[38,42,43,44,47],{},"Права суперпользователя (",[26,45,46],{},"root","), либо настроенная sudo-поддержка.",[38,49,50],{},"Установленный Docker (>= 20.10).",[38,52,53,54,57,58,61],{},"Свободный порт ",[26,55,56],{},"5000"," для HTTP или ",[26,59,60],{},"443"," для HTTPS.",[38,63,64,65,68,69,68,72,75,76,79],{},"Базовые утилиты: ",[26,66,67],{},"curl",", ",[26,70,71],{},"openssl",[26,73,74],{},"htpasswd"," (из ",[26,77,78],{},"apache2-utils",").",[17,81,83],{"id":82},"настройка-приватного-реестра","Настройка приватного реестра",[85,86,88],"h3",{"id":87},"шаг-1-установка-docker","Шаг 1: Установка Docker",[22,90,91],{},"На Debian/Ubuntu:",[93,94,99],"pre",{"className":95,"code":96,"language":97,"meta":98,"style":98},"language-bash shiki shiki-themes github-light github-dark","apt update\napt install -y docker.io\n","bash","",[26,100,101,114],{"__ignoreMap":98},[102,103,106,110],"span",{"class":104,"line":105},"line",1,[102,107,109],{"class":108},"sScJk","apt",[102,111,113],{"class":112},"sZZnC"," update\n",[102,115,117,119,122,126],{"class":104,"line":116},2,[102,118,109],{"class":108},[102,120,121],{"class":112}," install",[102,123,125],{"class":124},"sj4cs"," -y",[102,127,128],{"class":112}," docker.io\n",[22,130,131],{},"На RHEL/CentOS/Fedora:",[93,133,135],{"className":95,"code":134,"language":97,"meta":98,"style":98},"yum install -y docker\n",[26,136,137],{"__ignoreMap":98},[102,138,139,142,144,146],{"class":104,"line":105},[102,140,141],{"class":108},"yum",[102,143,121],{"class":112},[102,145,125],{"class":124},[102,147,148],{"class":112}," docker\n",[22,150,151],{},"Проверьте версию:",[93,153,155],{"className":95,"code":154,"language":97,"meta":98,"style":98},"docker --version\n",[26,156,157],{"__ignoreMap":98},[102,158,159,162],{"class":104,"line":105},[102,160,161],{"class":108},"docker",[102,163,164],{"class":124}," --version\n",[85,166,168],{"id":167},"шаг-2-запуск-контейнера-registry","Шаг 2: Запуск контейнера registry",[22,170,171],{},"Создайте отдельную сеть для реестра:",[93,173,175],{"className":95,"code":174,"language":97,"meta":98,"style":98},"docker network create registry-net\n",[26,176,177],{"__ignoreMap":98},[102,178,179,181,184,187],{"class":104,"line":105},[102,180,161],{"class":108},[102,182,183],{"class":112}," network",[102,185,186],{"class":112}," create",[102,188,189],{"class":112}," registry-net\n",[22,191,192],{},"Запустите официальный контейнер:",[93,194,196],{"className":95,"code":195,"language":97,"meta":98,"style":98},"docker run -d \\\n  --restart=always \\\n  --network=registry-net \\\n  -p 5000:5000 \\\n  --name registry \\\n  registry:2\n",[26,197,198,211,218,226,237,248],{"__ignoreMap":98},[102,199,200,202,205,208],{"class":104,"line":105},[102,201,161],{"class":108},[102,203,204],{"class":112}," run",[102,206,207],{"class":124}," -d",[102,209,210],{"class":124}," \\\n",[102,212,213,216],{"class":104,"line":116},[102,214,215],{"class":124},"  --restart=always",[102,217,210],{"class":124},[102,219,221,224],{"class":104,"line":220},3,[102,222,223],{"class":124},"  --network=registry-net",[102,225,210],{"class":124},[102,227,229,232,235],{"class":104,"line":228},4,[102,230,231],{"class":124},"  -p",[102,233,234],{"class":112}," 5000:5000",[102,236,210],{"class":124},[102,238,240,243,246],{"class":104,"line":239},5,[102,241,242],{"class":124},"  --name",[102,244,245],{"class":112}," registry",[102,247,210],{"class":124},[102,249,251],{"class":104,"line":250},6,[102,252,253],{"class":112},"  registry:2\n",[22,255,256],{},"Проверьте, что контейнер работает:",[93,258,260],{"className":95,"code":259,"language":97,"meta":98,"style":98},"docker logs registry\n",[26,261,262],{"__ignoreMap":98},[102,263,264,266,269],{"class":104,"line":105},[102,265,161],{"class":108},[102,267,268],{"class":112}," logs",[102,270,271],{"class":112}," registry\n",[85,273,275],{"id":274},"шаг-3-настройка-базовой-аутентификации","Шаг 3: Настройка базовой аутентификации",[22,277,278],{},"Сгенерируйте хеш пароля:",[93,280,282],{"className":95,"code":281,"language":97,"meta":98,"style":98},"htpasswd -nbB 12345 user | tr -d '\\r'\n",[26,283,284],{"__ignoreMap":98},[102,285,286,288,291,294,297,301,304,306],{"class":104,"line":105},[102,287,74],{"class":108},[102,289,290],{"class":124}," -nbB",[102,292,293],{"class":124}," 12345",[102,295,296],{"class":112}," user",[102,298,300],{"class":299},"szBVR"," |",[102,302,303],{"class":108}," tr",[102,305,207],{"class":124},[102,307,308],{"class":112}," '\\r'\n",[22,310,311,312,315],{},"Добавьте хеш в файл ",[26,313,314],{},".htpasswd"," (создайте его предварительно):",[93,317,319],{"className":95,"code":318,"language":97,"meta":98,"style":98},"mkdir -p /opt/registry\necho \"user:\u003Cgenerated_hash>\" > /opt/registry/.htpasswd\n",[26,320,321,332],{"__ignoreMap":98},[102,322,323,326,329],{"class":104,"line":105},[102,324,325],{"class":108},"mkdir",[102,327,328],{"class":124}," -p",[102,330,331],{"class":112}," /opt/registry\n",[102,333,334,337,340,343],{"class":104,"line":116},[102,335,336],{"class":124},"echo",[102,338,339],{"class":112}," \"user:\u003Cgenerated_hash>\"",[102,341,342],{"class":299}," >",[102,344,345],{"class":112}," /opt/registry/.htpasswd\n",[22,347,348],{},"Запустите реестр заново, подключив файл аутентификации:",[93,350,352],{"className":95,"code":351,"language":97,"meta":98,"style":98},"docker stop registry\ndocker run -d \\\n  --restart=always \\\n  --network=registry-net \\\n  -p 5000:5000 \\\n  -e REGISTRY_AUTH=htpasswd \\\n  -e REGISTRY_HTPASSWD=/opt/registry/.htpasswd \\\n  --name registry \\\n  registry:2\n",[26,353,354,363,373,379,385,393,403,413,422],{"__ignoreMap":98},[102,355,356,358,361],{"class":104,"line":105},[102,357,161],{"class":108},[102,359,360],{"class":112}," stop",[102,362,271],{"class":112},[102,364,365,367,369,371],{"class":104,"line":116},[102,366,161],{"class":108},[102,368,204],{"class":112},[102,370,207],{"class":124},[102,372,210],{"class":124},[102,374,375,377],{"class":104,"line":220},[102,376,215],{"class":124},[102,378,210],{"class":124},[102,380,381,383],{"class":104,"line":228},[102,382,223],{"class":124},[102,384,210],{"class":124},[102,386,387,389,391],{"class":104,"line":239},[102,388,231],{"class":124},[102,390,234],{"class":112},[102,392,210],{"class":124},[102,394,395,398,401],{"class":104,"line":250},[102,396,397],{"class":124},"  -e",[102,399,400],{"class":112}," REGISTRY_AUTH=htpasswd",[102,402,210],{"class":124},[102,404,406,408,411],{"class":104,"line":405},7,[102,407,397],{"class":124},[102,409,410],{"class":112}," REGISTRY_HTPASSWD=/opt/registry/.htpasswd",[102,412,210],{"class":124},[102,414,416,418,420],{"class":104,"line":415},8,[102,417,242],{"class":124},[102,419,245],{"class":112},[102,421,210],{"class":124},[102,423,425],{"class":104,"line":424},9,[102,426,253],{"class":112},[428,429,430],"blockquote",{},[22,431,432,433,437,438,440],{},"💡 ",[434,435,436],"strong",{},"Совет:"," Для управления несколькими пользователями используйте скрипт, который добавляет записи в ",[26,439,314],{}," при каждом изменении паролей.",[85,442,444],{"id":443},"шаг-4-настройка-tlshttps-необязательно","Шаг 4: Настройка TLS/HTTPS (необязательно)",[22,446,447],{},"Сгенерируйте самоподписанный сертификат:",[93,449,451],{"className":95,"code":450,"language":97,"meta":98,"style":98},"openssl req -new -newkey rsa:4096 -days 365 -nodes \\\n  -x509 -subj \"/CN=registry.example.com\" \\\n  -keyout /opt/registry/registry.key \\\n  -out /opt/registry/registry.crt\n",[26,452,453,480,493,503],{"__ignoreMap":98},[102,454,455,457,460,463,466,469,472,475,478],{"class":104,"line":105},[102,456,71],{"class":108},[102,458,459],{"class":112}," req",[102,461,462],{"class":124}," -new",[102,464,465],{"class":124}," -newkey",[102,467,468],{"class":112}," rsa:4096",[102,470,471],{"class":124}," -days",[102,473,474],{"class":124}," 365",[102,476,477],{"class":124}," -nodes",[102,479,210],{"class":124},[102,481,482,485,488,491],{"class":104,"line":116},[102,483,484],{"class":124},"  -x509",[102,486,487],{"class":124}," -subj",[102,489,490],{"class":112}," \"/CN=registry.example.com\"",[102,492,210],{"class":124},[102,494,495,498,501],{"class":104,"line":220},[102,496,497],{"class":124},"  -keyout",[102,499,500],{"class":112}," /opt/registry/registry.key",[102,502,210],{"class":124},[102,504,505,508],{"class":104,"line":228},[102,506,507],{"class":124},"  -out",[102,509,510],{"class":112}," /opt/registry/registry.crt\n",[22,512,513],{},"Запустите реестр с TLS:",[93,515,517],{"className":95,"code":516,"language":97,"meta":98,"style":98},"docker stop registry\ndocker run -d \\\n  --restart=always \\\n  --network=registry-net \\\n  -p 5000:5000 \\\n  -p 443:443 \\\n  -e REGISTRY_AUTH=htpasswd \\\n  -e REGISTRY_HTPASSWD=/opt/registry/.htpasswd \\\n  -v /opt/registry/registry.crt:/etc/docker/registry/certs/registry.crt \\\n  -v /opt/registry/registry.key:/etc/docker/registry/certs/registry.key \\\n  --name registry \\\n  registry:2\n",[26,518,519,527,537,543,549,557,566,574,582,592,602,611],{"__ignoreMap":98},[102,520,521,523,525],{"class":104,"line":105},[102,522,161],{"class":108},[102,524,360],{"class":112},[102,526,271],{"class":112},[102,528,529,531,533,535],{"class":104,"line":116},[102,530,161],{"class":108},[102,532,204],{"class":112},[102,534,207],{"class":124},[102,536,210],{"class":124},[102,538,539,541],{"class":104,"line":220},[102,540,215],{"class":124},[102,542,210],{"class":124},[102,544,545,547],{"class":104,"line":228},[102,546,223],{"class":124},[102,548,210],{"class":124},[102,550,551,553,555],{"class":104,"line":239},[102,552,231],{"class":124},[102,554,234],{"class":112},[102,556,210],{"class":124},[102,558,559,561,564],{"class":104,"line":250},[102,560,231],{"class":124},[102,562,563],{"class":112}," 443:443",[102,565,210],{"class":124},[102,567,568,570,572],{"class":104,"line":405},[102,569,397],{"class":124},[102,571,400],{"class":112},[102,573,210],{"class":124},[102,575,576,578,580],{"class":104,"line":415},[102,577,397],{"class":124},[102,579,410],{"class":112},[102,581,210],{"class":124},[102,583,584,587,590],{"class":104,"line":424},[102,585,586],{"class":124},"  -v",[102,588,589],{"class":112}," /opt/registry/registry.crt:/etc/docker/registry/certs/registry.crt",[102,591,210],{"class":124},[102,593,595,597,600],{"class":104,"line":594},10,[102,596,586],{"class":124},[102,598,599],{"class":112}," /opt/registry/registry.key:/etc/docker/registry/certs/registry.key",[102,601,210],{"class":124},[102,603,605,607,609],{"class":104,"line":604},11,[102,606,242],{"class":124},[102,608,245],{"class":112},[102,610,210],{"class":124},[102,612,614],{"class":104,"line":613},12,[102,615,253],{"class":112},[428,617,618],{},[22,619,620,621,624],{},"⚠️ ",[434,622,623],{},"Важно:"," Для продакшена используйте сертификаты, выданные доверенным CA.",[85,626,628],{"id":627},"шаг-5-проверка-работоспособности","Шаг 5: Проверка работоспособности",[22,630,631],{},"Выполните вход в реестр:",[93,633,635],{"className":95,"code":634,"language":97,"meta":98,"style":98},"docker login localhost:5000\n",[26,636,637],{"__ignoreMap":98},[102,638,639,641,644],{"class":104,"line":105},[102,640,161],{"class":108},[102,642,643],{"class":112}," login",[102,645,646],{"class":112}," localhost:5000\n",[22,648,649],{},"Попробуйте скачать публичный образ:",[93,651,653],{"className":95,"code":652,"language":97,"meta":98,"style":98},"docker pull hello-world\ndocker tag hello-world localhost:5000/hello-world\ndocker push localhost:5000/hello-world\n",[26,654,655,665,678],{"__ignoreMap":98},[102,656,657,659,662],{"class":104,"line":105},[102,658,161],{"class":108},[102,660,661],{"class":112}," pull",[102,663,664],{"class":112}," hello-world\n",[102,666,667,669,672,675],{"class":104,"line":116},[102,668,161],{"class":108},[102,670,671],{"class":112}," tag",[102,673,674],{"class":112}," hello-world",[102,676,677],{"class":112}," localhost:5000/hello-world\n",[102,679,680,682,685],{"class":104,"line":220},[102,681,161],{"class":108},[102,683,684],{"class":112}," push",[102,686,677],{"class":112},[22,688,689],{},"Проверьте каталог через curl:",[93,691,693],{"className":95,"code":692,"language":97,"meta":98,"style":98},"curl -u user:password http://localhost:5000/v2/_catalog\n",[26,694,695],{"__ignoreMap":98},[102,696,697,699,702,705],{"class":104,"line":105},[102,698,67],{"class":108},[102,700,701],{"class":124}," -u",[102,703,704],{"class":112}," user:password",[102,706,707],{"class":112}," http://localhost:5000/v2/_catalog\n",[709,710],"in-article-ad",{},[17,712,714],{"id":713},"проверка-результата","Проверка результата",[22,716,717,718,720,721,724,725,728],{},"Если команды выше завершились без ошибок, реестр готов к использованию. Вы можете проверить доступность через браузер (или ",[26,719,67],{},"), используя URL ",[26,722,723],{},"http://localhost:5000/v2/_catalog",". Для HTTPS используйте ",[26,726,727],{},"https://localhost:443/v2/_catalog",".",[17,730,732],{"id":731},"возможные-проблемы","Возможные проблемы",[35,734,735,744,756,766],{},[38,736,737,740,741,743],{},[434,738,739],{},"Ошибка подключения",": Убедитесь, что порт ",[26,742,56],{}," открыт и Docker может подключаться к сети.",[38,745,746,749,750,752,753,79],{},[434,747,748],{},"Ошибка аутентификации",": Проверьте хеш в ",[26,751,314],{}," (",[26,754,755],{},"htpasswd -vb /opt/registry/.htpasswd user",[38,757,758,761,762,765],{},[434,759,760],{},"TLS-ошибки",": Убедитесь, что сертификат установлен корректно (",[26,763,764],{},"docker logs registry",") и браузер доверяет CA.",[38,767,768,771],{},[434,769,770],{},"Низкая производительность",": Рассмотрите возможность использования TLS-интерфейса с хост-сетью или размещения реестра на выделенном сервере.",[22,773,774],{},"С этим вы полностью настроили приватный Docker Registry на Linux и можете безопасно хранить и распространять свои контейнерные образы.",[776,777,778],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":98,"searchDepth":116,"depth":116,"links":780},[781,782,783,790,791],{"id":19,"depth":116,"text":20},{"id":32,"depth":116,"text":33},{"id":82,"depth":116,"text":83,"children":784},[785,786,787,788,789],{"id":87,"depth":220,"text":88},{"id":167,"depth":220,"text":168},{"id":274,"depth":220,"text":275},{"id":443,"depth":220,"text":444},{"id":627,"depth":220,"text":628},{"id":713,"depth":116,"text":714},{"id":731,"depth":116,"text":732},null,"2026-08-03 14:33:45","Узнайте, как быстро настроить приватный Docker Registry на Linux, защитить образы и управлять доступом. Пошаговая инструкция с кодами и проверкой работоспособности.","medium",false,"10-15 мин","md",[800,803,806,809],{"question":801,"answer":802},"Какой Docker-образ используется для приватного реестра?","Для приватного реестра обычно используется образ `registry:2`, который является официальным легковесным решением.",{"question":804,"answer":805},"Нужно ли использовать TLS для безопасности?","Рекомендуется настроить TLS/HTTPS, чтобы защитить данные при передаче. В руководстве описан процесс генерации сертификатов.",{"question":807,"answer":808},"Как проверить, что реестр работает?","После настройки выполните `curl http://\u003Cserver>:5000/v2/_catalog` (или через Docker CLI `docker pull`), чтобы подтвердить работу.",{"question":810,"answer":811},"Как ограничить доступ к реестру?","Используйте базовую аутентификацию (`htpasswd`) и настройте Docker CLI с помощью `docker login`, либо интегрируйте с OAuth2/Dex.",[813,816,819,822,825],{"name":814,"text":815},"Установка Docker на систему","Добавьте репозиторий Docker, выполните `apt update` и установите `docker.io` (или используйте официальный пакет с https://download.docker.com). Подтвердите установку командой `docker --version`.",{"name":817,"text":818},"Запуск контейнера registry","Создайте сеть `docker network create registry-net`. Запустите контейнер: `docker run -d --restart=always --network=registry-net -p 5000:5000 --name registry registry:2`. Проверьте лог: `docker logs registry`.",{"name":820,"text":821},"Настройка базовой аутентификации","Сгенерируйте пароль: `htpasswd -nbB 12345 user | tr -d '\\r'`. Скопирууйте хеш в переменную. Запустите реестр с переменными `REGISTRY_AUTH=htpasswd` и `REGISTRY_HTPASSWD=/path/.htpasswd`.",{"name":823,"text":824},"Настройка TLS/HTTPS (необязательно)","Сгенерируйте сертификаты (`openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj '/CN=registry.example.com' -keyout registry.key -out registry.crt`). Монтируйте их в контейнер реестра.",{"name":826,"text":827},"Проверка работоспособности","Выполните `docker login \u003Cregistry-ip>:5000`, затем `docker pull hello-world`. Используйте curl: `curl -u user:password https://\u003Cserver>:5000/v2/_catalog`.","PT15M",[830,831,832,833,834,835,836,837],"Docker Private Registry","настроить приватный Docker Registry","Linux Docker registry setup","доступ к реестру Docker","аутентификация Docker Registry","TLS Docker Registry","Docker CLI","образы Docker","ru_RU",{},true,"/guides/linux/docker-private-registry","linux",[844,845,846],"/guides/linux/docker-install","/guides/linux/docker-images-management","/guides/linux/docker-compose","Гайды Docker",{"title":5,"description":794},"guides/linux/docker-private-registry","В этом руководстве вы узнаете, как установить и настроить приватный Docker Registry на Linux, ограничить доступ и проверить работу репозитория.",[852,853,854,855,856,857,858],"Docker","Linux","registry","private","setup","containers","инструменты","guide","GFpHcK-q2XjJIYmhZLHIjqSvjtGLsBo8GWfnx-zpUNM",{"data":862,"body":863},{},{"type":46,"children":864},[865],{"type":866,"tag":22,"props":867,"children":868},"element",{},[869,872,877],{"type":870,"value":871},"text","Для приватного реестра обычно используется образ ",{"type":866,"tag":26,"props":873,"children":875},{"className":874},[],[876],{"type":870,"value":28},{"type":870,"value":878},", который является официальным легковесным решением.",{"data":880,"body":881},{},{"type":46,"children":882},[883],{"type":866,"tag":22,"props":884,"children":885},{},[886],{"type":870,"value":805},{"data":888,"body":889},{},{"type":46,"children":890},[891],{"type":866,"tag":22,"props":892,"children":893},{},[894,896,902,904,910],{"type":870,"value":895},"После настройки выполните ",{"type":866,"tag":26,"props":897,"children":899},{"className":898},[],[900],{"type":870,"value":901},"curl http://\u003Cserver>:5000/v2/_catalog",{"type":870,"value":903}," (или через Docker CLI ",{"type":866,"tag":26,"props":905,"children":907},{"className":906},[],[908],{"type":870,"value":909},"docker pull",{"type":870,"value":911},"), чтобы подтвердить работу.",{"data":913,"body":914},{},{"type":46,"children":915},[916],{"type":866,"tag":22,"props":917,"children":918},{},[919,921,926,928,934],{"type":870,"value":920},"Используйте базовую аутентификацию (",{"type":866,"tag":26,"props":922,"children":924},{"className":923},[],[925],{"type":870,"value":74},{"type":870,"value":927},") и настройте Docker CLI с помощью ",{"type":866,"tag":26,"props":929,"children":931},{"className":930},[],[932],{"type":870,"value":933},"docker login",{"type":870,"value":935},", либо интегрируйте с OAuth2/Dex.",{"data":937,"body":938},{},{"type":46,"children":939},[940],{"type":866,"tag":22,"props":941,"children":942},{},[943,945,951,953,959,961,969,971,977],{"type":870,"value":944},"Добавьте репозиторий Docker, выполните ",{"type":866,"tag":26,"props":946,"children":948},{"className":947},[],[949],{"type":870,"value":950},"apt update",{"type":870,"value":952}," и установите ",{"type":866,"tag":26,"props":954,"children":956},{"className":955},[],[957],{"type":870,"value":958},"docker.io",{"type":870,"value":960}," (или используйте официальный пакет с ",{"type":866,"tag":962,"props":963,"children":967},"a",{"href":964,"rel":965},"https://download.docker.com",[966],"nofollow",[968],{"type":870,"value":964},{"type":870,"value":970},"). Подтвердите установку командой ",{"type":866,"tag":26,"props":972,"children":974},{"className":973},[],[975],{"type":870,"value":976},"docker --version",{"type":870,"value":728},{"data":979,"body":980},{},{"type":46,"children":981},[982],{"type":866,"tag":22,"props":983,"children":984},{},[985,987,993,995,1001,1003,1008],{"type":870,"value":986},"Создайте сеть ",{"type":866,"tag":26,"props":988,"children":990},{"className":989},[],[991],{"type":870,"value":992},"docker network create registry-net",{"type":870,"value":994},". Запустите контейнер: ",{"type":866,"tag":26,"props":996,"children":998},{"className":997},[],[999],{"type":870,"value":1000},"docker run -d --restart=always --network=registry-net -p 5000:5000 --name registry registry:2",{"type":870,"value":1002},". Проверьте лог: ",{"type":866,"tag":26,"props":1004,"children":1006},{"className":1005},[],[1007],{"type":870,"value":764},{"type":870,"value":728},{"data":1010,"body":1011},{},{"type":46,"children":1012},[1013],{"type":866,"tag":22,"props":1014,"children":1015},{},[1016,1018,1024,1026,1032,1034,1040],{"type":870,"value":1017},"Сгенерируйте пароль: ",{"type":866,"tag":26,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":870,"value":1023},"htpasswd -nbB 12345 user | tr -d '\\r'",{"type":870,"value":1025},". Скопирууйте хеш в переменную. Запустите реестр с переменными ",{"type":866,"tag":26,"props":1027,"children":1029},{"className":1028},[],[1030],{"type":870,"value":1031},"REGISTRY_AUTH=htpasswd",{"type":870,"value":1033}," и ",{"type":866,"tag":26,"props":1035,"children":1037},{"className":1036},[],[1038],{"type":870,"value":1039},"REGISTRY_HTPASSWD=/path/.htpasswd",{"type":870,"value":728},{"data":1042,"body":1043},{},{"type":46,"children":1044},[1045],{"type":866,"tag":22,"props":1046,"children":1047},{},[1048,1050,1056],{"type":870,"value":1049},"Сгенерируйте сертификаты (",{"type":866,"tag":26,"props":1051,"children":1053},{"className":1052},[],[1054],{"type":870,"value":1055},"openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj '/CN=registry.example.com' -keyout registry.key -out registry.crt",{"type":870,"value":1057},"). Монтируйте их в контейнер реестра.",{"data":1059,"body":1060},{},{"type":46,"children":1061},[1062],{"type":866,"tag":22,"props":1063,"children":1064},{},[1065,1067,1073,1075,1081,1083,1089],{"type":870,"value":1066},"Выполните ",{"type":866,"tag":26,"props":1068,"children":1070},{"className":1069},[],[1071],{"type":870,"value":1072},"docker login \u003Cregistry-ip>:5000",{"type":870,"value":1074},", затем ",{"type":866,"tag":26,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":870,"value":1080},"docker pull hello-world",{"type":870,"value":1082},". Используйте curl: ",{"type":866,"tag":26,"props":1084,"children":1086},{"className":1085},[],[1087],{"type":870,"value":1088},"curl -u user:password https://\u003Cserver>:5000/v2/_catalog",{"type":870,"value":728},[]]