Aleksandr
29.07.2019
07:42:11
это поинтереснее будет - Тебе либо сертифиаты надо добавлять в блок before_script - но я уже если честно заколебался - в общем как только я пытаюсь в контейнер docker:dind что либо положить (сделать) то он отваливаеться - пробовал вот так
services:
- name: docker:18-dind
command:
- /bin/sh
- -c
- |
echo "$GIT_EXAMPLE_COM_CTR" > /etc/ssl/certs/git.example.com.crt || exit
echo "$GIT_REGISTRY_EXAMPLE_COM_CTR" > /etc/ssl/certs/git-registry.example.com.crt || exit
dockerd-entrypoint.sh || exit
stages:
- build
# --- commit no tag
build:
stage: build
image: docker:stable
script:
- docker info
так вот docker:18-dind - он перестат работать - и следовательно даже
script:
- docker info
не отрабатывает
Почему?
потому что все эти переменные я уже позаносил в в гитлаб - но вопрос заключаеться в том как dind контейнеру их распознать (то есть подкинуть) что бы логин успешно прошел
хоть ты на екзекутор shell переходи - т/к/ с сервера полключаюсь успешно
Google
Ruslan
29.07.2019
07:44:51
Все отлично работает
build_push:
stage: build
image: docker:latest
dependencies:
- composer
script:
- echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER registry.gitlab.com --password-stdin
Andrey
29.07.2019
07:44:59
Никитяо
29.07.2019
07:45:29
Andrey
29.07.2019
07:45:40
Aleksandr
29.07.2019
07:45:49
Ruslan
29.07.2019
07:46:50
Aleksandr
29.07.2019
07:47:03
Error response from daemon: Get https://git-registry.example.com/v2/: Get https://git.example.com//jwt/auth?account=root&client_id=docker&offline_token=true&service=container_registry: x509: certificate signed by unknown authority
тут дело не в том что я должен пароль и логин использовать - а в сертификатах
Ruslan
29.07.2019
07:47:47
Aleksandr
29.07.2019
07:47:56
Andrey
29.07.2019
07:48:04
???
Ruslan
29.07.2019
07:48:15
понятно
Google
Aleksandr
29.07.2019
07:48:56
ну так напиши рабочий код - епта
если тебе что то не нравиться
Andrey
29.07.2019
07:49:30
откуда он у тя
только если у вас админы конченые
Aleksandr
29.07.2019
07:51:25
все очень просто - 2-ва сервера (ubuntu) - два гитлаба - первый простой без реджистри - втрой с реджестри - в частности первый https://gitlab.example.com - второй https://git.example.com и в месте с ним https://git-registry.example.com
вот и все
Andrey
29.07.2019
07:52:36
хорошо. см попробуй серт в контейнер засунуть ЦА-серт от реджитори
Aleksandr
29.07.2019
07:53:28
хорошо. см попробуй серт в контейнер засунуть ЦА-серт от реджитори
согласен - я это и пробовал сделать - но docker:dind что то отваливаеться когда я пытаюсь например вот так
services:
- name: docker:18-dind
command:
- /bin/sh
- -c
- |
echo "$GIT_EXAMPLE_COM_CTR" > /etc/ssl/certs/git.example.com.crt || exit
echo "$GIT_REGISTRY_EXAMPLE_COM_CTR" > /etc/ssl/certs/git-registry.example.com.crt || exit
dockerd-entrypoint.sh || exit
может потому что должен всегда работать dockerd-entrypoint.sh
в образе на докер хабе
ENTRYPOINT ["dockerd-entrypoint.sh"]
CMD []
Andrey
29.07.2019
07:55:36
ну у тебя не в образе проблема же
Aleksandr
29.07.2019
07:55:44
а при регистрации раннера
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \
--docker-volumes /etc/ssl/certs:/etc/ssl/certs \
не поможет?
Andrey
29.07.2019
07:58:38
https://gitlab.com/gitlab-com/support-forum/issues/3524
Aleksandr
29.07.2019
08:01:41
разве что
variables:
DOCKER_DRIVER: overlay2
REGISTRY_URL: git-registry.example.com
прописать
George
29.07.2019
08:03:38
Google
George
29.07.2019
08:04:08
а в docker:stable
Aleksandr
29.07.2019
08:04:33
хоть и клиент docker:stable
George
29.07.2019
08:06:00
я тебе более того скажу
echo "$GIT_EXAMPLE_COM_CTR" > /etc/ssl/certs/git.example.com.crt || exit
echo "$GIT_REGISTRY_EXAMPLE_COM_CTR" > /etc/ssl/certs/git-registry.example.com.crt || exit
dockerd-entrypoint.sh || exit
так серты никто не пересобирает
в убунте так
COPY ROOT.crt /usr/local/share/ca-certificates/ROOT.crt
RUN update-ca-certificates
насчет того, что надо поправить dind - я подумал, что может ты и прав
Aleksandr
29.07.2019
08:08:11
George
29.07.2019
08:08:11
теоретически ты, наверное, можешь самому демону еще передать параметр —insecure-registries
Aleksandr
29.07.2019
08:09:25
George
29.07.2019
08:10:23
https://gitlab.com/gitlab-org/gitlab-runner/issues/1678
services:
- name: docker:dind
command: ["--insecure-registry=registry.bucker.net"]
у парней так работает
Aleksandr
29.07.2019
08:10:34
можно застопить пайплайн - и залезть в контейнер dind - и вручную туда положить сертивикаты - хотя бы для проверки
Ivan
29.07.2019
08:11:30
Hey!
пытаюсь сделать доступным docker host из контейнера
делаю как описано тут: https://forums.docker.com/t/accessing-host-machine-from-within-docker-container/14248/5
docker-compose.yml:
version: '2'
services:
db:
image: some/image
networks:
- dockernet
networks:
dockernet:
external: true
в итоге получаю:
ERROR: Network dockernet declared as external, but could not be found. Please create the network manually using docker network create dockernet and try again.
Но сеть вроде как объявлена в docker-compose.yml
Что делаю не так?
Aleksandr
29.07.2019
08:13:14
у парней так работает
тогда попробовать вот так?
stages:
- build
build:
stage: build
image: docker:stable
services:
- name: docker:18-dind
command: ["--insecure-registry=git-registry.example.com"]
script:
- docker info
George
29.07.2019
08:13:39
Google
George
29.07.2019
08:14:17
до запуска компоуза
Ivan
29.07.2019
08:16:17
George
29.07.2019
08:16:21
никак
ты же external ее объявил
Ivan
29.07.2019
08:17:04
хм, ок, попробую - сенькс!
George
29.07.2019
08:19:13
запускать в network host mode, при этом у тебя локалхост = то же что и локалхост хоста
но нет изоляции сети
а в статье по твоей ссылке все написано
The main problem for me was to reliably find out the IP address of the host. So in order to have a fixed set of IPs for both my host and my containers I’ve set up a docker network like this:
docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 dockernet
Now each container can connect to the host under the fixed IP 192.168.0.1.
You just need to make sure, that you connect all your containers to that “dockernet” network you just created. You can do that with the --net=dockernet option for docker run. Or from a docker-compose.yml:
version: '2'
services:
db:
image: some/image
networks:
- dockernet
networks:
dockernet:
external: true
Networks are described in the network documentation 7.3k. They are quite useful and not very hard to understand.
т.е. фиксируют адрес gateway
в кастомной сети
Aleksandr
29.07.2019
08:25:34
попробуй
Красавец - залогинился
/ # docker login git-registry.example.com
Username: root
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
/ #
вот же жесть - в общем вот это помогло:
command: ["--insecure-registry=git-registry.example.com"]
но единственное мне пришлось в контейнере dind (я туда подключился) прописать в vi /etc/hosts - данные сервера
192.168.100.104 git.example.com
192.168.100.104 git-registry.example.com
иначе пишет как Error response from daemon: Get http://git-registry.example.com/v2/: dial tcp: lookup git-registry.example.com on 10.0.2.3:53: no such host
есть ли возможность это как то сделать или в раннере или в gitlab-ci
Daniil
29.07.2019
08:30:20
@gecube, гражданин с самой проактивной позицией в этом чатике, готовый помочь людям в беде ?
George
29.07.2019
08:34:17
хотя как их передать в services хз
Andrey
29.07.2019
08:34:31
Google
Aleksandr
29.07.2019
08:34:42
extra-hosts?
ну я на раннере делал
extra_hosts = ["gitlab.example.com:192.168.100.103"]
Ruslan
29.07.2019
08:35:43
для сервиса можно свой образ собрать с данными в etc/hosts
Aleksandr
29.07.2019
08:35:53
можно попробовать как
extra_hosts = ["git.example.com:192.168.100.104"]
extra_hosts = ["git-registry.example.com:192.168.100.104"]
конечно dns не знает его как бы и нет
в облаке такого бы не было)
An
29.07.2019
08:41:18
Привет, перестал запускаться контейнер, запускаю его через китематик
George
29.07.2019
08:41:40
что такое китематик? что в логах?
An
29.07.2019
08:41:54
Шлет в логи такое Always On: The availability replica manager is going offline because SQL Server is shutting down. This is an informational message only. No user action is required.
George
29.07.2019
08:42:02
An
29.07.2019
08:42:31
Ну это я в кинематике, а есть где-то нормальные логи, типа папки logs ?
George
29.07.2019
08:43:23
без понятия. В обычном докере можно сходить в /var/lib/docker/containers/айди_контейнера/айди-контейнера-json.log
Aleksandr
29.07.2019
08:44:30
George
29.07.2019
08:45:22
entrypoint: ["/bin/sh","-c" ,'echo "ip_address host_name">>/etc/hosts && dockerd-entrypoint.sh']
пиздец
Dmitry
29.07.2019
08:51:44
Никитяо
29.07.2019
08:52:11
Почему?
потому что контейнер докера это один процесс
Aleksandr
29.07.2019
08:52:34