Anonymous
таске всмысле баш скрипт написать?
Konstantin
Pavel
std::slavik
уже не помню в чем там была проблема, но тоже долго возился
std::slavik
std::slavik
я с глючстером вот так сделал
std::slavik
суть в чем - shared монтируется как volume nfs, а local монтируется к папке просто
Ruslan
я с глючстером вот так сделал
А я подумал зачем мне монтировать и просто скопировал через docker cp . Просто я хотел по правильному сделать, а так никто не делает
std::slavik
Ruslan
это разные вещи
Согласен. В моем случае простое cp т.к. нужен был файл, а если нужно логи тянуть, то я читал что через name volume можно
std::slavik
std::slavik
так что про то что монтируется откуда то куда то - бред
std::slavik
особенно когда речь о докере идет
что из докера монтировать что из хост системы - вызываются одни и те же системные вызовы
одного и того же ядра
std::slavik
можно как находясь в докере примонтировать том, так и в хост системе
std::slavik
просто не нужно путать монтирование и пробрасываение
забыл слово правильное
std::slavik
sudo docker run -v /etc/nfs:/mnt:shared \
-v /etc/glusterfs:/etc/glusterfs:z \
-v /var/lib/glusterd:/var/lib/glusterd:z \.....
std::slavik
std::slavik
при запуске контейнера вот это происходит без доп параметров - системным вызовом unshare от процесса отвязываются все пространства имен
std::slavik
сеть, каталоги, айди процессов и тд
std::slavik
потом делается форк и дочерний процесс существовать продолжает в чистом поле так сказать
std::slavik
а также права чтения записи указываем
std::slavik
то есть тут мы находимся в одной фаловой системе и ниче с ней не делаем
std::slavik
но если например контейнер создает в себе файловую систему какую то - например сетевую, то для того, чтобы пространство имен этой файловой системы оказалось в файловой системе другой какой то - например хост ОС - нужно выполнить их сопряжение
std::slavik
так как они устроены по разному и чтобы в выбранной нами папке хост системы появилось пространство имен, например сетевой файловой системы - нужен драйвер
Mikhail
std::slavik
mount -t glusterfs s1.mediatube.xyz:/shared /mnt/shared
вот тут как раз -t говорит какой драйвер использовать
Konstantin
Konstantin
ты даже вопрос не можешь понять
std::slavik
Semen
Всем привет
Использую для поднятия зоопрака контейнеров docker-compose. Поднимаю db, redis, приложение. Как мне гарантировать, что db и redis будут подняты раньше, чтобы при старте контейнера с приложением накатить маграции и данные в хранилища?
Semen
Подскажи, пожалуйста
Konstantin
никак, сделать так, чтобы скрипт миграции ждал зависимости
Alexey
Mikhail
Semen
Alexey
А что не так с depends?
если health check нет, то следующий контейнер начнет запускаться независимо от того, стартанула ли база в первом
Mentat
Semen
Mentat
И уже от него зависимо запускать апп
Alexey
Понял, спасибо
https://docs.docker.com/engine/reference/builder/#healthcheck
тут про то, как healthcheck делается, про depend on тоже найдешь в доке композа
Mikhail
Konstantin
std::slavik
monit можно
Mikhail
Zabbix
Konstantin
L1 24\7 команду повесить на контейнер
Konstantin
не страдайте
ὦan
есть у меня простой docker-compose файл
web-server:
build: ./web-server
ports:
- "9090:9090"
links:
- "postgres:localhost"
postgres:
image: postgres
container_name: codesearch-db
Трабл в том, что приложение не видит базу Connection to localhost:5432 refused
(знаю что links устарело) я если правильно понимаю что по дефолту всегда bridge network и контейнера друг друга видят. Или нужно host network делать?
Konstantin
убери линкс - ненужное, замени localhost на postgres
Konstantin
и уже почитайте про основы композа
ὦan
>замени localhost на postgres
это вы про изменение в коде приложения?
Konstantin
да
Konstantin
мы
Konstantin
имя сервиса = днс имя по которому можно подключиться
Mikhail
В кастомной сети
Sergey️
Как адекватно создавать несколько дерикторий через mkdir в докерфайле, одним RUN?
Денис
Денис
Аля mkdir test test2 test3
Sergey️
Денис
Денис
А вот mkdir test && mkdir test2 был бы не тру
smile
Денис
Денис
Буковы лишние ненужны
Anton
Linux:
host> mkdir pp && docker run --rm -it -v $PWD/pp:/pp alpine
guest> touch /pp/1
host> $ ls -l pp
-rw-r--r-- 1 anton staff 0 Sep 18 22:23 1
Mac:
host> mkdir pp && docker run --rm -it -v $PWD/pp:/pp alpine
guest> touch /pp/1
host> $ ls -l pp
-rw-r--r-- 1 root root 0 Sep 18 19:24 1
Почему на маке и линуксе поведение разное и как на линуксе добиться того же, что и на маке?
Anton
(в плане group/user создаваемого файла)
Dmitry
Anton
Dmitry
не создавай папку - он сам от рута создаст и примонтирует с правами root:root
Dmitry
тогда надо использовать userns и маппинг юзеров https://docs.docker.com/engine/security/userns-remap/#prerequisites
Dmitry
либо создавать при запуске контейнера юзера с теми же uid gid, что и владелец папки
Dmitry
с помощью entrypoint-скрипта