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
1 |
192.168.1.171:4567/user1/test |