Robocat
gitlab CI
переменные окружения помойму там не так задаются, поэтому спросил про ансибл
Сергей
Здравствуйте, подскажите как можно запустить докер в докер контейнере? Ругается на инструкцию RUN dockerd --iptables=false failed to start daemon: Error initializing network controller: Error creating default "bridge" network: Failed to set link up for docker0: operation not permitted Без --iptables=false ругается не на bridge, а на NAT Если же запустить с помощью service docker start, то всё равно не работает. [5/8] RUN /etc/init.d/docker start && docker run hello world: #8 0.377 * Starting Docker: docker #8 0.378 ...done. #8 0.388 docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. #8 0.388 See 'docker run --help'.
Evgeniy
выглядит так что вы путаете виртуальную машину и контейнер
Evgeniy
В контейнере гоняются тесты, и для тестов нужен ещё докер
что мешает прокинуть докер с хостовой машины ? хоть это и плохо
Сергей
полный лог
Сергей
что мешает прокинуть докер с хостовой машины ? хоть это и плохо
Не совсем понимаю. Вот у меня есть сборка проекта в докере, но для новых тестов нужен ещё докер внутри самого контейнера, где собирается сервис. Что мне прокидывать?
Evgeniy
взаимодействие идет через unixsocket или tcp соответственно его можно прокинуть в контейнер тогда в контейнере достаточно иметь запущенный docker cli который подключится к docker daemon на хостовой машине например
Evgeniy
изначально идея паковать такую штуку в контейнер выглядит не здраво, а забиванием гвоздей микроскопом
Evgeniy
сори если грубо, это просто имхо выглядит что вы хотите виртуальную машину запоквать в контейнер и мыслите идей что контейнер это как виртуальная машина, но эти мысли обычно приводят в тупик, обречена на провал в общем, не вы первый идете по этому пути и не вы последний.
Сергей
взаимодействие идет через unixsocket или tcp соответственно его можно прокинуть в контейнер тогда в контейнере достаточно иметь запущенный docker cli который подключится к docker daemon на хостовой машине например
Это можно настроить исключительно внутри контейнера, не настраивая демон на хосте? Напрямую docker run нигде не прописан, чтобы указать priveleged mode или прокинуть docker.sock как volume. Может я не совсем правильно понял, но из того, что нагуглил - везде так или иначе фигурирует хост. Если тесты ждут dockerHost=unix:///var/run/docker.sock, то получается, мне нужно чтобы был контейнер докер dind, в котором будет стягиваться нужный образ для билда и при этом как volume монтироваться /var/run/docker.sock внутрь этого контейнера для билда также в /var/run/docker.sock? Скорее всего вопрос очень тупой, но я пока не понимаю, как это реализовать при условии, что править я могу ci config в гитлабе и dockefile образа. Можете натолкнуть на мысль?
Сергей
Для каких операций нужен докер в докере в данном случае? Что делают тесты с этим докером?
Я так понимаю, некоторые из тестов гоняются через докер раньше всё было ок, потом добавили какие-то тесты и появилась ошибка ERROR org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy - ping failed with configuration Environment variables, system properties and defaults. Resolved: dockerHost=unix:///var/run/docker.sock apiVersion='{UNKNOWN_VERSION}' registryUrl='https://index.docker.io/v1/' registryUsername='root' registryPassword='null' registryEmail='null' ... Caused by: java.lang.IllegalStateException: Could not find a valid Docker environment. Please see logs and check configuration И мне сказали, что когда они через свою IDE гоняют тесты, она у них цепляется к докеру непосредственно на хосте (логично). Таким образом, в контейнер, в котором идёт тест нужно добавить докер. Это и есть задача, собственно
Alexander
Я так понимаю, некоторые из тестов гоняются через докер раньше всё было ок, потом добавили какие-то тесты и появилась ошибка ERROR org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy - ping failed with configuration Environment variables, system properties and defaults. Resolved: dockerHost=unix:///var/run/docker.sock apiVersion='{UNKNOWN_VERSION}' registryUrl='https://index.docker.io/v1/' registryUsername='root' registryPassword='null' registryEmail='null' ... Caused by: java.lang.IllegalStateException: Could not find a valid Docker environment. Please see logs and check configuration И мне сказали, что когда они через свою IDE гоняют тесты, она у них цепляется к докеру непосредственно на хосте (логично). Таким образом, в контейнер, в котором идёт тест нужно добавить докер. Это и есть задача, собственно
Я бы попробовал, как советовали выше, прокинуть в контейнер, квотором запускаются тесты, сокет докера, как volume. Если запуск происходит через docker gitlab runner, то там должны быть параметры запуска контейнеров задач. Возможно стоит отдельный раннер сделать под задачи, которым нужен docker внутри.
Mighty M@x
Скажите, как мне решить эту проблему при compose up?
Mighty M@x
Помогите коллеги
Evgeniy
Скажите, как мне решить эту проблему при compose up?
давно уже можно любые экстеншены ставить легко и просто https://github.com/mlocati/docker-php-extension-installer
Mighty M@x
Но это же процесс билда через композер
Mighty M@x
Я же не могу приостановить процесс и установить экстеншен и продолжить
Mighty M@x
Там ведь еще и другие этапы.
Mighty M@x
Evgeniy
самую первую строку посмотри где ты там composer видишь ?
Mighty M@x
Нет, нет ))
Evgeniy
тебе пишет что команда pecl install -o -f redis упала
Mighty M@x
Я имею в виду через docker compose
Mighty M@x
Да. ))
Mighty M@x
А есть ли вариант его отдельно установить?
Evgeniy
что именно ?
Mighty M@x
redis
Mighty M@x
Да, кстати
Mighty M@x
Я его и установил.
Evgeniy
тебе надо redis extension я кинул ссылку где лежат готовые инструкции по установке extension
Mighty M@x
Отдельно.
CHESTERTINE
Work ban but not unban
Mighty M@x
Привет, всем!
Mighty M@x
Mighty M@x
Подскажите, как избавиться от этой ошибки,
Mighty M@x
У меня нод установлен, но тут всегда ошибка.
Mighty M@x
apt-get update && apt-get install -y nodejs
Mighty M@x
apt-get update && apt-get install -y nodejs
Это уже пробовал, не помогло
Сергей
Это уже пробовал, не помогло
apk add nodejs npm && apt-get update && apt-get install -y nodejs ?
Mighty M@x
apk add nodejs npm?
Smykoil
Мужики, если я перенесу проект в другую директорию, у меня что-нб собьётся? Volume для бд например не дропнется в неизвестность?
Smykoil
Кто ж тебя знает
я ж вопрос не про себя задал. я же не спросил, дропнеися ли моя память в неизвестность, если мне пиздатнуть трубой по голове. я ведь другой вопрос задал, не касающийся ни медицины, ни психологии. чтобы ответить не нужно знать меня, дружище.
Nikita
Мужики, если я перенесу проект в другую директорию, у меня что-нб собьётся? Volume для бд например не дропнется в неизвестность?
Если вольюм это именно вольюм, а не маунт, то не дропнется А так - контейнеры они независимы (кроме вольюмов) Так что нет, ничего не дропнется
Andrew
Ребят, не подскажите как это пофиксить? Хочу докеркампоуз запустить и вот такое пишет # docker compose up -d [+] Running 0/1 ⠿ node_exporter Error 15.3s Error response from daemon: Get "https://quay.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers) Как может не быть туда доступа? Или нужно какие-то ключи закинуть?
Solyar
Andrew
Там трафик и так через прокси идёт. А прокси в Ирландии
A
Добрый вечер! У меня в итоге не получилось разобраться, как же запустить несколько docker-compose в одной сети. Дано: 1. docker-compose.yml - основной, в котором есть nginx, и у которого порты проброшены к хосту. 2. docker-compose.yml (таких проектов может быть несколько) также содержит в себе nginx, но порты не пробрасываются. Нужно настроить сети таким образом, чтобы первый мог проксировать запросы по названию контейнера к остальным. Я пробовал сделать так: docker-compose.yml (основной) services: main-nginx: image: nginx:latest ports: - '80:80' networks: - nginx-external networks: nginx-external: name: nginx-external docker-compose.yml (второстепенный) services: main-nginx: image: nginx:latest networks: - nginx-external networks: nginx-external: external: true name: nginx-external но это не работает. возможно, я неправильно понял, как работает external network, или вообще не так с сетями работаю...
Evgeniy
я бы создал сеть ручками и в обоих docker-compose указал external: true и должно заработать но у тебя там еще имена сервисов одинаковые я не уверен что это будет работать, так как мало эксперементировал с подобным
A
имена сервисов разные, т.к. там при запуске устанавливается в виде префикса - нейспейс
A
external: true означает что сеть создается за пределами docker-compose
т.е. external: true мне нужно во всех docker-compose писать?
Evgeniy
т.е. external: true мне нужно во всех docker-compose писать?
я бы сделал так и создал эту сеть руками перед запуском всех композов
A
я так пробовал + пробовал вручную создать - не работало. но при создании я делал так: docker network create nginx-external и возможно в этом проблема. Когда вручную создаю, тоже нужно extyernal: true ставить ? искал в доках такой параметр для network create - не нашел
Sergey
https://docs.docker.com/network/
A
спасибо! буду читать
Smykoil
Парни.. Не могу никак придумать, как нстроить сервер, чтобы можно было быстро выгружать на него проекты (у кажого свой docker-compose файл), при этом чтобы они не мешали друг другу.. Если кто-то сталкивался, я весь во внимании)
Andrew
в разные папки?
Smykoil
в разные папки?
вообще, желательно, чтобы на каждый проект был отдельный пользователь и в его домашней папке был проект
Smykoil
Один файл сделай, пути только скорректируй и оркестрируй
С каждый проектом файл будет увеличиваться.. Каждый проект придётся настраивать, менять пути.. Управлять всем этим со временем станет невыносимо..
Smykoil
Тут пахнет переходом на кубер
Я сильно не увлекался его изучением, но насколько помню, одной машины мало для кубера, там всё еще сложнее.
😶‍🌫️
Smykoil
У меня в компосе было под 12 контейнеров. Да, это не шибко классно, зато в одном месте
Просто хотел бы разделить всё, чтобы если понадобилось дать доступ человеку, он не смог бы сломать все проекты
Smykoil
Но тут еще проблемка.. Каждый проект не сможет ведь слушать 80 и 443 порты.. Можно как-то докер настроить, чтобы он не прокидывал порты в контейнер и озоботить этим nginx, который будет работать вне докера?
Smykoil
Или может есть лучше решение?
Mighty M@x
Здравствуйте всем!
Mighty M@x
Помогите обойти ошибку