gitlab registry

Thank you for reading this post, don't forget to subscribe!

Настрой­ка реест­ра для обра­зов Docker Gitlab
Docker Registry поз­во­ля­ет хра­нить гото­вые Image для сво­е­го репо­зи­то­рия на GitLab.
Для GitLab-registry дол­жен быть уста­нов­лен docker (сов­ме­сти­мость вер­сий необ­хо­ди­мо посмот­реть в доку­мен­та­ции GitLab теку­щей версии)

пра­вим /etc/gitlab/gitlab.rb добав­ляя сле­ду­ю­щие строки:
external_url 'http://192.168.1.171' (адрес наше­го хоста)
registry_external_url 'http://192.168.1.171:4567'
registry['enable'] = true
letsencrypt['enable'] = false

после чего перезапускаем:
gitlab-ctl reconfigure

Теперь поль­зо­ва­те­ли име­ют воз­мож­ность вой­ти в Реестр кон­тей­не­ров со сво­и­ми учет­ны­ми дан­ны­ми GitLab, используя:
docker login 192.168.1.171:4567

!!! : При отсут­ствии защи­щен­но­го соеди­не­ния https необ­хо­ди­мо ука­зать в кон­фи­гу­ра­ци­он­ном фай­ле /etc/docker/daemon.json
{
"insecure-registries": ["192.168.1.171:4567"]
}

!!! Дан­ную настрой­ку необ­хо­ди­мо вно­сить на каж­дом сер­ве­ре, где вы в даль­ней­шем пла­ни­ру­е­те авто­ри­зо­вы­вать­ся в реест­ре для обра­зов Gitlab.
Для при­ме­не­ния настро­ек необ­хо­ди­мо пере­за­гру­зить сер­вис docker, либо выпол­нить reload docker'a, тем самым пере­чи­тав кон­фи­гу­ра­ци­он­ные файлы.

По умол­ча­нию Docker-registry ста­но­вит­ся досту­пен всем проектам:
В web-интер­фей­се вклад­ка Projects->Your project->example_project в левой части экра­на появ­ля­ет­ся вклад­ка Registry,
в кото­рой мож­но просмотреть/управлять име­ю­щи­ми­ся Docker-обра­за­ми, а так же сге­не­ри­ро­ва­на инструк­ция, отно­ся­ща­я­ся к ваше­му про­ек­ту, по сбор­ке и достав­ке обра­за реестр GitLab.

 

GITLAB воз­мож­ные проблемы.
Если docker не может авто­ри­зо­вать­ся в registry и на сер­ве­ре исполь­зу­ет­ся прок­си, то добав­ля­ем IP gitlab в no proxy в файл:
cat /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://IP-proxy:3128/"
Environment="HTTPS_PROXY=http://IP-proxy:3128/" "NO_PROXY=localhost,127.0.0.1, ip адреса"

после чего пере­за­пус­ка­ем docker
-------
так­же если воз­ни­ка­ет ошиб­ка при авторизации:
docker login IP:4567
Username: test
Password:
Error response from daemon: Get https://IP:4567/v2/: http: server gave HTTP response to HTTPS client

то сле­ду­ю­щий файл добав­ля­ем запись:
cat /etc/docker/daemon.json
{"insecure-registries" : ["IP:4567"]}

после чего пере­за­пус­ка­ем docker
ошиб­ка воз­ни­ка­ет из-за отсут­ствия ssl

 

Чтобы загрузить проект на gitlab registry необходимо:

авто­ри­зо­вать­ся (под поль­зо­ва­те­лем создан­ным в гитлабе):
docker login IP:4567
собрать образ(в дирек­то­рии в кото­рой име­ет­ся dockerfile запус­ка­ем сле­ду­ю­щую команду)
во вре­мя сбор­ки могут быть проблемы(если име­ет­ся прок­си, поэто­му ука­жем прок­си для кон­тей­не­ра) (перед RUN)
ENV http_proxy="http://IP-proxy:3128"
если про­из­во­дит­ся уста­нов­ка gem install то (RUN gem install --http-proxy http://IP-proxy:3128)

docker build -t IP:4567/user/project .
(если образ уже есть то пере­име­но­вы­ва­ем его docker tag имя_образа IP:4567/user/project)
после чего загру­жа­ем этот образ в гитлаб
docker push IP:4567/user/project

---------------- ------------------ ------------------

отме­тим, что загруз­ку мож­но про­из­ве­сти толь­ко при кор­рект­ном назва­нии образа:
логи­ним­ся в registry

[root@cent170 ~]# docker login 192.168.1.171:4567
Username: user1
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

кача­ем образ:
[root@cent170 ~]# docker pull centos:7
7: Pulling from library/centos
a02a4930cb5d: Pull complete
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for centos:7

пере­име­но­вы­ва­ем:
[root@cent170 ~]# docker tag centos:7 192.168.1.171:4567/user1/test

пушим:
[root@cent170 ~]# docker push 192.168.1.171:4567/user1/test
The push refers to repository [192.168.1.171:4567/user1/test]
071d8bd76517: Pushed
latest: digest: sha256:365fc7f33107869dfcf2b3ba220ce0aa42e16d3f8e8b3c21d72af1ee622f0cf0 size: 529

что­бы про­ве­рить загру­зил­ся ли образ захо­дим под поль­зо­ва­те­лем в гитлаб
Projects -- Your projects -- user1/test -- Registry