central
Ладненько, путь пройдет идущий. Пойду тестить и пытаться сломать докер 😅 Спасибо за инфу
Чтобы сломать докер вам для начала нужно будет найти не настолько наивную тему для экспериментов
Aleksey
Это почему же она наивная?
Ну она милая и наивная вспоминаешь себя предыдущего когда сидел с портами разбирался а патом раз.
Artyom
можно ли в настройках docker desktop поменять "networkType": "gvisor" на bridge?
Egor
Подскажите пожалуйста, я хочу взять макбук м1 про 16 512, с докером щас все ок, то читал, что бывают косяки с ним в 21-22 году ?
central
Но ОЗУ ест как не в себя
Виталий
инсекьюр-реджестри же достаточно, чтобы пушить/пулить в реджестри
Max
Всем привет. Кто подскажет как лучше собирать ансибле в контейнере докер использовать alpine образ или полноценный ? Разница в 100 метров , но в alpine нет конфига ансибле и ssh-сервер, только если самому все прописать и ставить. На практике что лучше использовать ?
Max
Стандартный
Константин спасибо за рекомендации !
Konstantin
Потому что бывает что для модуля могут быть зависимости
Konstantin
Каждый раз пересобирать образ чтобы очередную либу добавить
Konstantin
Такое себе
Max
Такое себе
Согласен
Евгений
Всем привет! Кто может помочь в решении вопроса? Суть в следующем. У меня имеется два сервера шлюза, через которые все остальные сервера имеют доступ к интернету. Один основной, второй резервный. Оба они имеют постоянный доступ к интернету. Так же на них крутится nginx, через который получаем доступ от клиентов (интернета) к серверам с контейнерами. На Локальных серверах с контенерами прописаны шлюзы на один сервер для доступа к интернет. Теперь суть. После остановки основного сервера. перестали работать контейнеры. Мы поменяли гетвей на локальных серверах. Это не помогло! Затем рестартанули контейнер это тоже не помогло! Перебилд контейнера тоже не помог. В общем контейнеры не начали работать пока не запустили основной сервер. не можем понять почему так ведут себя контейнеры.
Евгений
Контейнеры в swarm
Евгений
В общем весь функционал который был направлен наружу в интернет перестал работать.
Евгений
смотрел, но привязки к конкретному шлюзу не увидел, там все на маскарадах и проброске портов завязано, но может я просто не догоняю
Евгений
Может вам нужно конкретнее что-нибудь показать?
Евгений
docker inspect и iptables?
Евгений
Просто на резевный шлюз надеяться не приходится, пока не поймем почему так себя ведут контейнеры, -это для нас было полной неожиданностью.
Siroga 🇺🇦
Смотрите таблицу маршрутизации на хостах swarm. С них есть доступ в интернет через 2й шлюз при отключенном первом?
Евгений
В нем о шлюзах ни чего!
Евгений
только порты и виртуальные сети докер и контейнеров
Евгений
Вот так выглядит iptables на котором висят контейнеры, на одном сервере, на втором мы увидем то же самое
Евгений
Евгений
Siroga 🇺🇦
ip r s
Siroga 🇺🇦
т.е. ip route show если полностью
Siroga 🇺🇦
А выхлоп текстом а не картинками, можна на pastebin или подобное
Евгений
ip r s
ip r s default via 192.168.0.51 dev virbr0 proto static default via 192.168.0.52 dev virbr0 proto static 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 172.18.0.0/16 dev docker_gwbridge proto kernel scope link src 172.18.0.1 192.168.0.0/24 dev virbr0 proto kernel scope link src 192.168.0.54 12:11:26 root@x122:/scripts#
Евгений
т.е. ip route show если полностью
ip route show default via 192.168.0.51 dev virbr0 proto static default via 192.168.0.52 dev virbr0 proto static 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 172.18.0.0/16 dev docker_gwbridge proto kernel scope link src 172.18.0.1 192.168.0.0/24 dev virbr0 proto kernel scope link src 192.168.0.54 12:11:59 root@x122:/scripts#
Евгений
Это был один из серверов сварм вот второй ip r s default via 192.168.0.52 dev eno1 proto static 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 172.18.0.0/16 dev docker_gwbridge proto kernel scope link src 172.18.0.1 192.168.0.0/24 dev eno1 proto kernel scope link src 192.168.0.53 root@x121:/var# ip route show default via 192.168.0.52 dev eno1 proto static 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 172.18.0.0/16 dev docker_gwbridge proto kernel scope link src 172.18.0.1 192.168.0.0/24 dev eno1 proto kernel scope link src 192.168.0.53
Евгений
netplane первый СВАРМ /etc/netplan/01-netcfg.yaml [----] 28 L:[ 1+13 14/ 18] *(327 / 406b) 0010 0x00A [*][X] # This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: eno1: dhcp4: false bridges: virbr0: interfaces: [eno1] addresses: [ 192.168.0.54/24 ] gateway4: 192.168.0.52 nameservers: addresses: [212.19.149.178, 212.19.149.226]
Евгений
конфиг второго сервера СВАРМ /etc/netplan/01-netcfg.yaml [----] 6 L:[ 1+ 9 10/ 14] *(248 / 345b) 0110 0x06E [*][X] # This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: eno1: addresses: [ 192.168.0.53/24 ] gateway4: 192.168.0.52 nameservers: addresses: - 212.19.149.178. - 212.19.149.226
Евгений
Сейчас гетвей прописан на резервный шлюз
Евгений
Но нам это не помогло, пока не запустили сервер первого шлюза
Siroga 🇺🇦
У Вас на первом сервере два маршрута по умолчанию. 1й маршрут на неработающий шлюз .51. Судя по всему на втором сервере swarm у Вас должен быть интернет с самого хоста потому как маршрут указан через .52
Siroga 🇺🇦
А еще чтобы избежать плясок со сменой шлюза на хостах, настройте VRRP/Keepalived или подобное на шлюзах
Евгений
Да на первом сервере это сейчас так! Почему остался первый до сей поры не понятно (Сам шлюз 51 сейчас включен и работает) Настройки меняли путем правки конфига netplan и перезапуском netplane try, затем применили настройку enter. шлюз второй 52 появился а первый не пропал. Остался поднятым до сих пор
Евгений
Получается что по умолчанию трафик шел на 51 сервер, а 52 игнорил?
Siroga 🇺🇦
Шлюз на .51 первый в списке и будет использоваться в независимости рабочий он или нет
Евгений
Евгений
командами шлюзы не прописывали
Евгений
В теории если 51 шлюз удалить то при выключении 51 контейнеры должны без танцев с бубном переключится на 52. Правильно я понимаю?
Siroga 🇺🇦
Контейнеры для выхода в интернет будут использовать шлюз настроенный на хостовой машине. Если там все будет правильно, то и у контейнеров проблем не будет. Легко проверяется простыми тестами
Евгений
А еще чтобы избежать плясок со сменой шлюза на хостах, настройте VRRP/Keepalived или подобное на шлюзах
на шлюзах он уже есть! Для смены виртуального ip для доступа из вне
Siroga 🇺🇦
Что еще за виртуальный ІР для доступа из вне?
Евгений
Контейнеры для выхода в интернет будут использовать шлюз настроенный на хостовой машине. Если там все будет правильно, то и у контейнеров проблем не будет. Легко проверяется простыми тестами
Как мы поняли в контейнерах не работали запросы, которые выполнялись изнутри > наружу, те запросы которые срабатывают непосредственно от клиентов работали нормально.
Евгений
Что еще за виртуальный ІР для доступа из вне?
У нас два шлюза с выходом в интернет имеют постоянные ip 100 и 101, а вот 99 плавающий, и весь трафик основной настроен на плавающий ip? между сервами 100 и 101
Евгений
подключены в один свич датацентра
Евгений
если один сервер выключается второй получает виртуальный ip 99
Siroga 🇺🇦
При инициализации исходящего соединения из контейнера в интернет используется таблица маршрутизации хостовой системы. У Вас на первом хосте такая таблица была некореткно настроена
Евгений
Все бы ничего но весь трафик nginx шел на 52 -резервный, при выключении первого 51-го, было неожиданно что часть функций потерялась, но как мы поняли это было из за того что остался старый шлюз
Siroga 🇺🇦
Да. Если приходит запрос от внешнего клиента - то проблем быть не должно в конкретном описанном случае. Потому что ответный трафик (из контейнера) будет идти на тот ІР с которого пришел запрос. А Вашем случае 52
Евгений
Ну ок! Спасибо за разбор ситуации! Осталось только протестировать это все. и сделать автоматическую корректную смену шлюзов. Как нетплан меня разочаровал! Из за того что не вырубил шлюз выключенного сервера. Замену шлюзов вроде сделали по фэншую, с перезапуском netplan try
DSI
Здраствуйте можете пожалуюста помоч с докер файлом FROM python:3.10-alpine WORKDIR /app COPY ./requirements.txt . RUN pip install --upgrade pip RUN pip install -r requirements.txt RUN apk add --no-cache bash wkhtmltopdf COPY . . CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"] это мой докер файл мне надо установить wkhtmltopdf не почемуто выдает ошибку негде не могу найти с интернета celery_1 | Traceback (most recent call last): celery_1 | File "/usr/local/lib/python3.10/site-packages/celery/app/trace.py", line 477, in trace_task celery_1 | R = retval = fun(*args, **kwargs) celery_1 | File "/usr/local/lib/python3.10/site-packages/celery/app/trace.py", line 760, in __protected_call__ celery_1 | return self.run(*args, **kwargs) celery_1 | File "/app/market/celeryapp.py", line 78, in convert_html_to_pdf celery_1 | conf = Configuration(wkhtmltopdf='/usr/bin/wkhtmltopdf') celery_1 | File "/usr/local/lib/python3.10/site-packages/pdfkit/configuration.py", line 38, in __init__ celery_1 | raise IOError('No wkhtmltopdf executable found: "%s"\n' celery_1 | OSError: No wkhtmltopdf executable found: "/usr/bin/wkhtmltopdf" celery_1 | If this file exists please check that this process can read it or you can pass path to it manually in method call, check README. Otherwise please install wkhtmltopdf - https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf это ошибка я использовал его с pdfkit для конвертатци HTML в PDF с Celery from pdfkit.configuration import Configuration @celery.task() def convert_html_to_pdf(url, pdf_file_path): conf = Configuration(wkhtmltopdf='/usr/bin/wkhtmltopdf') pdfkit.from_url(url, pdf_file_path, configuration=conf) это мой селерй таск
DSI
version: "3.11" services: db: container_name: db_cv_maker image: postgres:15.0-alpine env_file: - ./.env expose: - 5432 environment: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_HOST=${POSTGRES_HOST} - POSTGRES_PORT=${POSTGRES_PORT} volumes: - postgres_data:/var/lib/postgresql/data/ fastapi: build: . command: bash -c 'while !</dev/tcp/db/5432; do sleep 1; done; uvicorn main:app --host 0.0.0.0' ports: - "8000:8000" environment: - DATABASE_URL=postgresql://POSTGRES_USER:POSTGRES_PASSWORD@POSTGRES_HOST:POSTGRES_PORT/POSTGRES_DB env_file: - ./.env volumes: - .:/app - media_volume:/uploads - static_volume:/FastApiCVmaker/media/templates/static depends_on: - db - celery - redis redis: image: redis:6-alpine volumes: - redis_data:/data/ expose: - 6379 celery: build: . command: celery -A market.celeryapp worker --loglevel=info volumes: - .:/app depends_on: - redis environment: CELERY_BROKER_URL: "redis://redis:6379/0" CELERY_RESULT_BACKEND: "redis://redis:6379/0" volumes: postgres_data: media_volume: redis_data: static_volume:
Ivan
Здраствуйте можете пожалуюста помоч с докер файлом FROM python:3.10-alpine WORKDIR /app COPY ./requirements.txt . RUN pip install --upgrade pip RUN pip install -r requirements.txt RUN apk add --no-cache bash wkhtmltopdf COPY . . CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"] это мой докер файл мне надо установить wkhtmltopdf не почемуто выдает ошибку негде не могу найти с интернета celery_1 | Traceback (most recent call last): celery_1 | File "/usr/local/lib/python3.10/site-packages/celery/app/trace.py", line 477, in trace_task celery_1 | R = retval = fun(*args, **kwargs) celery_1 | File "/usr/local/lib/python3.10/site-packages/celery/app/trace.py", line 760, in __protected_call__ celery_1 | return self.run(*args, **kwargs) celery_1 | File "/app/market/celeryapp.py", line 78, in convert_html_to_pdf celery_1 | conf = Configuration(wkhtmltopdf='/usr/bin/wkhtmltopdf') celery_1 | File "/usr/local/lib/python3.10/site-packages/pdfkit/configuration.py", line 38, in __init__ celery_1 | raise IOError('No wkhtmltopdf executable found: "%s"\n' celery_1 | OSError: No wkhtmltopdf executable found: "/usr/bin/wkhtmltopdf" celery_1 | If this file exists please check that this process can read it or you can pass path to it manually in method call, check README. Otherwise please install wkhtmltopdf - https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf это ошибка я использовал его с pdfkit для конвертатци HTML в PDF с Celery from pdfkit.configuration import Configuration @celery.task() def convert_html_to_pdf(url, pdf_file_path): conf = Configuration(wkhtmltopdf='/usr/bin/wkhtmltopdf') pdfkit.from_url(url, pdf_file_path, configuration=conf) это мой селерй таск
а в контейнере точно есть эта тула?
Ivan
запусти с фризом и проверь что внутри
DSI
Здраствуйте можете пожалуюста помоч с докер файлом FROM python:3.10-alpine WORKDIR /app COPY ./requirements.txt . RUN pip install --upgrade pip RUN pip install -r requirements.txt RUN apk add --no-cache bash wkhtmltopdf COPY . . CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"] это мой докер файл мне надо установить wkhtmltopdf не почемуто выдает ошибку негде не могу найти с интернета celery_1 | Traceback (most recent call last): celery_1 | File "/usr/local/lib/python3.10/site-packages/celery/app/trace.py", line 477, in trace_task celery_1 | R = retval = fun(*args, **kwargs) celery_1 | File "/usr/local/lib/python3.10/site-packages/celery/app/trace.py", line 760, in __protected_call__ celery_1 | return self.run(*args, **kwargs) celery_1 | File "/app/market/celeryapp.py", line 78, in convert_html_to_pdf celery_1 | conf = Configuration(wkhtmltopdf='/usr/bin/wkhtmltopdf') celery_1 | File "/usr/local/lib/python3.10/site-packages/pdfkit/configuration.py", line 38, in __init__ celery_1 | raise IOError('No wkhtmltopdf executable found: "%s"\n' celery_1 | OSError: No wkhtmltopdf executable found: "/usr/bin/wkhtmltopdf" celery_1 | If this file exists please check that this process can read it or you can pass path to it manually in method call, check README. Otherwise please install wkhtmltopdf - https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf это ошибка я использовал его с pdfkit для конвертатци HTML в PDF с Celery from pdfkit.configuration import Configuration @celery.task() def convert_html_to_pdf(url, pdf_file_path): conf = Configuration(wkhtmltopdf='/usr/bin/wkhtmltopdf') pdfkit.from_url(url, pdf_file_path, configuration=conf) это мой селерй таск
выдает ошибку до запуска контейнера не может найти wkhtmltopdf
DSI
а в контейнере точно есть эта тула?
doniyor@doniyor-HP-Laptop-15-da1xxx:~/PycharmProjects/FastApiCVmaker$ docker-compose up --build Building celery [+] Building 47.9s (11/12) docker:default => [internal] load build definition from Dockerfile 0.6s => => transferring dockerfile: 323B 0.0s => [internal] load .dockerignore 0.8s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/python:3.10-alpine 3.7s => [auth] library/python:pull token for registry-1.docker.io 0.0s => [internal] load build context 0.7s => => transferring context: 699.29kB 0.2s => [1/7] FROM docker.io/library/python:3.10-alpine@sha256:8fc9419f65880c3f7a127f6243962b3bdee6543ecbd3d6188cacdf3c52e35dca 0.0s => CACHED [2/7] WORKDIR /app 0.0s => CACHED [3/7] COPY ./requirements.txt . 0.0s => CACHED [4/7] RUN pip install --upgrade pip 0.0s => CACHED [5/7] RUN pip install -r requirements.txt 0.0s => ERROR [6/7] RUN apk add --no-cache bash wkhtmltopdf 42.4s ------ > [6/7] RUN apk add --no-cache bash wkhtmltopdf: 2.757 fetch https://dl-cdn.alpinelinux.org/alpine/v3.19/main/x86_64/APKINDEX.tar.gz 5.123 fetch https://dl-cdn.alpinelinux.org/alpine/v3.19/community/x86_64/APKINDEX.tar.gz 41.36 ERROR: unable to select packages: 41.36 wkhtmltopdf (no such package): 41.36 required by: world[wkhtmltopdf] ------ ERROR: failed to solve: executor failed running [/bin/sh -c apk add --no-cache bash wkhtmltopdf]: exit code: 1 ERROR: Service 'celery' failed to build : Build failed
DSI
DSI
Alexander
В альпине нет такого пакета.
DSI
где есть?
Ivan
где есть?
посмотри варианты с добавлением репозиториев в которых этот пакет есть
Ivan
ты точно гуглил?
DSI
да не смог найти
Ivan
RUN echo 'https://dl-cdn.alpinelinux.org/alpine/v3.14/community' >> /etc/apk/repositories RUN echo 'https://dl-cdn.alpinelinux.org/alpine/v3.14/main' >> /etc/apk/repositories RUN apk add --no-cache wkhtmltopdf
Vladimir
Доброго дня! Кто имел дело с утилитой мониторинга контейнеров ctop. Скажите, что означает у некоторых контейнеров uptime -5s