Lamobot
user id
su
Sudo docker run
да у него докер с судо сконфигурирован, наверна
0xDEFACE
Запускаешь процесс под id 8983
я думал volume владелец будет
0xDEFACE
1000 985 мне нужно чтобы у вольюм был владелец солр
0xDEFACE
у него ид 8983
George
это так не работает
George
не используй volume
Lamobot
я думал volume владелец будет
Нет, вольюм с хост машины будет с хост правами. Надо или ручками их исправлять, или контейнер запускать под нужным юзером
George
используй расширенный синтаксис https://docs.docker.com/storage/bind-mounts/
George
и создавай каталог заранее с нужными правами
George
Нет, вольюм с хост машины будет с хост правами. Надо или ручками их исправлять, или контейнер запускать под нужным юзером
на самом деле нет. Беда в том, что если каталога на хосте нет, то докер его от рута создает
George
короче, вопрос с правами в докере не решен от слова никак
0xDEFACE
да
так я могу,но до последнего думал что без этого можно обойтись
George
это докир!
George
тут все через одно место
George
вообще кажется, что тебе байнд маунт (это именно так, а не вольюм) тебе не нужен
George
он вызывает больше проблем, чем толку от него
George
но даже с обычным вольюмом - файлы можно вытащить или записать в него. Либо через временный контейнер, либо напрямую через /var/lib/docker/volumes, либо через docker cp или пайп (docker exec cat ololo | cat > ololo)
Valery
я думал volume владелец будет
вчера в чатике linux по этому поводу закусь была, я показывал эту дырку сейчас в двух картинках опишу
Valery
su
короче, вопрос с правами в докере не решен от слова никак
нужно при установке докера создать группу для докера, пользователя докера и это есть на сайте докера
George
ты понимаешь, что это не работает чуть более, чем полностью?
George
т.е. ограничить доступ к докер-демону - да, можно, но это бинарная опция (либо есть доступ, либо нет). И RBAC нет. И это проблема
George
ибо пользователь в группе докер может сделать https://t.me/docker_ru/140360
su
ибо пользователь в группе докер может сделать https://t.me/docker_ru/140360
вот вы злые грубияны, попробуйте сначала, прежде чем орать https://youtu.be/Qq78zfXUq18?t=358
George
ты где его видел?
George
я тебе более того скажу - я развлекался тем, что запускал несколько выделенных докер демонов на одном хосте ) для каждого юзера свой. Но это выглядит.... ужасно
su
ну, так это 19.03
вчера поставил, полет нормальный
George
и фактически не решает проблему, которую выше я по ссылке скинул. За доклад - спасибо, посмотрим
George
кстати, у меня на рабочую машинку тоже докатился. До этого был 18.06, вроде
George
ну хоть энтетейнмент какой, да, не за что
ну, посмотрю на досуге ) интересно - до kubernetes эта штука когда докатится )
su
мне вообще пришлось чистый новый раздел освободить, и да, там в Ubuntu 19 канешно мы как подопытные кролики, но зато мейби баги пофиксят, я включил отправку в canonical всего-всего, пусть разбираются)
Anonymous
Всем привет! Сразу нучну с вопроса. В общем, есть 4 контейнера: redis, postgres, mongo и node.js, вот последний должен уметь ко всем коннектиться. Есть docker-compose файлик, где описаны они и заведены под depends_on к node.js (вроде бы так они становятся доступны). В node.js localhost изменен на postgres, redis, mongo соответственно, чтобы стучаться в разные контейнеры, но почему то мне как всегда разворачивает с ошибкой: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] или [ioredis] Unhandled error event: Error: connect ECONNREFUSED 127.0.0.1:6379 при этом если стучаться через docker exec в любой контейнер, они отвечают что все ок у них. Соответственно делаю вывод, что это node.js не видит их, но как помочь ему - не понимаю.
Anonymous
version: "3.5" services: redis: image: redis:alpine restart: always volumes: - ./redis:/data ports: - "6379:6379" healthcheck: test: ["CMD-SHELL", "redis-cli", "ping"] interval: 30s timeout: 10s retries: 5 postgres: image: postgres:9.6 restart: always env_file: - .env volumes: - ./postgres:/var/lib/postgresql/data ports: - "5432:5432" - "4040:4040" healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 30s timeout: 10s retries: 5 start_period: 15s mongo: image: mongo:latest restart: always env_file: - .env volumes: - ./mongo:/data/db ports: - "27017:27017" api: build: . restart: always volumes: - .:/usr/src/app ports: - "3030:3030" depends_on: - mongo - postgres - redis
George
ты прав, что надо ходить по именам контейнеров, но, видимо, у тебя почему-то эта настройка не подсосалась
Anonymous
Jąńek
как это сделать?
https://docs.docker.com/compose/networking/
Jąńek
и по кускам раздели, типа ноду и редис сначала запустить, а потом всё остальное
Jąńek
иначе непонятно где падает
George
ну, а откуда оно 127.0.0.1 или локалхост всасывает?
Anonymous
нигде нет localhost
George
образ ТОЧНО пересобрал?
Anonymous
я вообще все image ремувнул
Anonymous
и сделал docker-compose up --build
George
🤷‍♂️сделай больше отладочных принтов, но похоже на то, что я сказал - не подцепляет конфиг. Думаю, тебе как прогеру, будет не сложно отладить переменные для подключения к БД
Hикoлaй
Комрады, это наверно 100 раз уже обсуждалось, но что то не пойму. Как из контейнера в swarm mode, где крутится nginx спроксировать на host. То-есть если в просто звпустить контейнер без swarm, то можно установить ему network=host и в nginx в proxy_pass написать 127.0.0.1 и все работает. А как подобное реализовать для swarm?
Anonymous
всем спасибо!
0xDEFACE
вчера в чатике linux по этому поводу закусь была, я показывал эту дырку сейчас в двух картинках опишу
6 шаг не понял, юзер в докер под рутом заходит и пишет в /tmp/data какой то фаил, а потом
George
это когда у тебя есть исполняемый файл, который наследует права не от юзера, а от своих прав, которые в ФС
George
таким макаром можно программу с правами рута от непривилегированного юзера запустить
George
но вообще аппармор и селинукс против этого защищают
0xDEFACE
но вообще аппармор и селинукс против этого защищают
sticky bit и все такое..ща читаю поглубже
0xDEFACE
это когда у тебя есть исполняемый файл, который наследует права не от юзера, а от своих прав, которые в ФС
все познал, вот для меня главный вопрос сейчас как между контейнерами сделать общие файлы по феншую....заводить всезде 1 юзера мне не очень хочеться
George
если очень хочется - делай volume и монтируй его в оба контейнера
0xDEFACE
если очень хочется - делай volume и монтируй его в оба контейнера
и везде владельецм будет вообще юзер хоста?
George
и везде владельецм будет вообще юзер хоста?
нет. Юзер в контейнере, либо как задашь
0xDEFACE
нет. Юзер в контейнере, либо как задашь
если не менять контейнер, а взять из хаба, вот у меня допустим злополучный solr - я не могу примонтировать туда директорию чтобы владельцем был солр
George
ну, особенность образа. Чего ты хочешь
George
можешь вообще под рутом всегда внутри контейнера запускать (не бест пректис) - и тогда очевидно прав с пермишенами не будет
0xDEFACE
нет. Юзер в контейнере, либо как задашь
я может чего то не понимаю - как вообще можно прицепить вольюм чтобы владельцем был юзер в контейнере не добавляя юзера на хосте?
0xDEFACE
менять владельца при запуске?
George
не надо добавлять юзера на хосте