George
в убунте так
COPY ROOT.crt /usr/local/share/ca-certificates/ROOT.crt
RUN update-ca-certificates
George
насчет того, что надо поправить dind - я подумал, что может ты и прав
George
теоретически ты, наверное, можешь самому демону еще передать параметр —insecure-registries
George
https://gitlab.com/gitlab-org/gitlab-runner/issues/1678
George
services:
- name: docker:dind
command: ["--insecure-registry=registry.bucker.net"]
George
у парней так работает
Alex
можно застопить пайплайн - и залезть в контейнер dind - и вручную туда положить сертивикаты - хотя бы для проверки
Ivan
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
Что делаю не так?
Alex
у парней так работает
тогда попробовать вот так?
stages:
- build
build:
stage: build
image: docker:stable
services:
- name: docker:18-dind
command: ["--insecure-registry=git-registry.example.com"]
script:
- docker info
George
George
George
до запуска компоуза
George
никак
George
ты же external ее объявил
Ivan
хм, ок, попробую - сенькс!
George
запускать в network host mode, при этом у тебя локалхост = то же что и локалхост хоста
George
но нет изоляции сети
George
а в статье по твоей ссылке все написано
George
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.
George
т.е. фиксируют адрес gateway
George
в кастомной сети
Alex
попробуй
Красавец - залогинился
/ # 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
/ #
Alex
вот же жесть - в общем вот это помогло:
command: ["--insecure-registry=git-registry.example.com"]
Alex
но единственное мне пришлось в контейнере 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
Alex
есть ли возможность это как то сделать или в раннере или в gitlab-ci
Daniil
@gecube, гражданин с самой проактивной позицией в этом чатике, готовый помочь людям в беде 😊
George
George
хотя как их передать в services хз
Andrey
Alex
extra-hosts?
ну я на раннере делал
extra_hosts = ["gitlab.example.com:192.168.100.103"]
Ruslan
для сервиса можно свой образ собрать с данными в etc/hosts
Alex
можно попробовать как
extra_hosts = ["git.example.com:192.168.100.104"]
extra_hosts = ["git-registry.example.com:192.168.100.104"]
конечно dns не знает его как бы и нет
Alex
в облаке такого бы не было)
Alex
An
Привет, перестал запускаться контейнер, запускаю его через китематик
George
что такое китематик? что в логах?
An
Шлет в логи такое 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
George
An
Ну это я в кинематике, а есть где-то нормальные логи, типа папки logs ?
George
без понятия. В обычном докере можно сходить в /var/lib/docker/containers/айди_контейнера/айди-контейнера-json.log
George
entrypoint: ["/bin/sh","-c" ,'echo "ip_address host_name">>/etc/hosts && dockerd-entrypoint.sh']
George
пиздец
Constantine
Никита
Почему?
потому что контейнер докера это один процесс
Alex
https://gitlab.com/gitlab-org/gitlab-runner/issues/2302
предложили вот такой вариант
services:
- name: docker:dind
alias: docker
entrypoint: ["/bin/sh","-c" ,'echo "192.168.100.104 git.example.com">>/etc/hosts && dockerd-entrypoint.sh']
Никита
некоторые конечно и ssh в докере поднимают, но так делать тоже не нгадо
George
Alex
но если мне надо еще один адресс
George
вы меня со своими догмами задолбали уже
George
вот смотрите
George
предположим, мы суем обработку данных на пхп или питоне в докер
George
очевидно, что пилить КАЖДЫЙ процесс обработки в отдельном контейнере - это дорого
George
с другой стороны, засовывать все 100500 воркеров в один контейнер тоже плохо
Никита
George
поэтому нарезаешь какое-то разумное количество воркеров в один контейнер и радуешься жизни
George
но при этом это гомогенный сервис
George
в смысле - не ssh + почта + php + elastic в одном флаконе
George
но если рассмотреть докер только как пакетный менеджер, то почему бы его не использовать вместо lxc? тот же докер с омнибас гитлабом
George
George
George
Никита
Alex
зачем?
я добавляю два
192.168.100.104 git.example.com
192.168.100.104 git-registry.example.com
George
ну, тут трейдофф тащить дополнительный компонент в виде lxc, или пытаться все пихать в докер
George
больше сущностей - больше нагрузка на опсов
Никита
приходилось отлаживать supervisord, когда непонятно из-за чего падает контейнер? или падает по нескольким взаимосвязанным причинам?
Alex
я добавляю два
192.168.100.104 git.example.com
192.168.100.104 git-registry.example.com
в общем кому интерестно то в сервисный контейнер в hosts добавляем как
services:
- name: docker:18-dind
alias: docker
entrypoint: ["/bin/sh", "-c", 'echo "192.168.100.104 git.example.com">>/etc/hosts && echo "192.168.100.104 git-registry.example.com">>/etc/hosts && dockerd-entrypoint.sh']
Alex
проверил - работает
George
George
честно - при прочих равных лучше, чтобы за живостью сервиса следил сам докер, чем супервизор
George
просто не надо путать разработку и продакшен
Chebyrash