SharUpOff | Code
88 subscribers
38 photos
16 links
Download Telegram
🐳 Docker Hub умер, да здравствует Docker Hub!

Здесь можно рассуждать на тему ненадёжности облачных решений, но тогда станет душно, а мы договорились приятно проводить время

У Тебя же есть виртуалка, через которую выходишь в большой интернет? Можно завернуть трафик в неё.

Всё 💁‍♂️

Ты ещё здесь? 😅 Ну хорошо, ещё можно запустить Registry в режиме pull-through cache - здесь информации мало, зато строчкой ниже будет раздел Registry, а в нём ссылка на спецификацию Distribution Registry. Перейдём в раздел Configuring a registry. Как тебе такое чтиво на вечер?

docker run registry …

Не люблю эти длинные команды для запуска контейнеров, поэтому создал compose.yaml:

services:
registry:
image: registry
network_mode: host
volumes:
- /etc/docker/registry:/etc/docker/registry

В смонтированном каталоге лежит config.yml. Cкопировал его из образа и добавил proxy. Как в спецификации:

proxy:
remoteurl: https://registry-1.docker.io
ttl: 24h

🚀 Теперь запускаем docker compose up любимым способом. Я использую systemd. Можно сразу настроить basic auth и letsencrypt, но я пока добавил в Caddyfile:

docker.efstudios.org {
reverse_proxy localhost:5000

basicauth {
sharupoff password-hash
}
}


👀 Проверяем:

docker login docker.efstudios.org --username sharupoff


Login Succeeded


docker run docker.efstudios.org/library/hello-world


Hello from Docker!
This message shows that your installation appears to be working correctly.


☝️ Кстати, образы нужно запрашивать из подкаталога library, о чём документация в основном умалчивает.

☕️ А теперь, пока кэш наполняется образами, наполни чашку ароматным чаем и отлично проведи остаток этого вечера

#docker #dockerhub #dockerregistry #caddy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
🚀 github.com/sharupoff/gwhosts-proxy

Помнишь, я обещал допинать какой-нибудь домашний проект? Правки можно вносить бесконечно, но как бы то ни было, gwhosts-proxy вот уже несколько лет делит трафик на роутере на правильный и не очень.

🔎 Как это работает? Если поднять промежуточный DNS-сервер прямо на шлюзе, можно читать DNS-запросы и управлять таблицей маршрутизации.

Провайдеры тоже так делают. Use DNSCrypt.

⚙️ Что под капотом? Netlink, парсер DNS-пакетов, и Select. В средние века, когда этих вот async/await'ов ещё не было, мы развлекались как могли.

👀 Кстати, о роутере. Обзавёлся одной очень интересной железкой... Но об этом в другой раз.

👋 Стабильного соединения с миром сновидений.

#python #dns #select #netlink #networking #gwhosts
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Live stream started
Live stream finished (29 minutes)
🏆 3 место в категории Архитектор Данных заняла команда CAP, в составе которой мне удалось принять участие в Хакатоне ARCHI.Tech.

Событие пересеклось с поездкой на Saint TeamLead Conf 2024 (о ней чуть позже), поэтому:
1. К ребятам подключался по вечерам
2. Черновой API набросал в 3 часа ночи на высоте 11К ✈️

Но оно того стоило

Огромное спасибо команде:
- Алексей Лялин, за приглашение в команду и всю проделанную работу ❤️
- Александр Лянгузов, за божественные схемы данных ❤️

#хакатон #архитектура #architech #работавкоманде
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤‍🔥3😱2🏆2
На этой неделе столкнулись с любопытной проблемой: на Ubuntu 24.04 не устанавливается SSL-соединение из Docker-контейнера до некоторых хостов, если… Если запущен Wireguard.

Выглядит это так:

docker compose run --rm service curl -v https://example.com


* Trying 172.16.64.10:443...
* Connected to example.com (172.16.64.10) port 443 (#0)
* ALPN: offers h2,http/1.1
* TLSV1.3 (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs


⌛️ Здесь долго висит...

* Recv failure: Connection reset by peer
* OpenSSL SSL_connect: Connection reset by peer in connection to example.com:443
* Closing connection 0
curl: (35) Recv failure: Connection reset by peer


ℹ️ Дело в том, что WG для своего интерфейса устанавливает MTU 1420, оставляя 80 байт на собственный оверхед:

cat /sys/class/net/wg0/mtu


1420


Docker же использует стандартный размер пакета 1500 байт:

docker compose run --rm service cat /sys/class/net/eth0/mtu


1500


При такой конфигурации TLS handshake в некоторых случаях не влазит в целый пакет.

Беглое чтение документации подсказывает, что настройки WG можно трогать только в крайнем случае, а вот для Docker Compose значение MTU можно смело изменить.

✍️ Создадим файл:

cat > docker-compose.override.yml << EOF
networks:
default:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: 1420
EOF


👀 Проверим MTU:

docker compose down
docker compose run --rm service cat /sys/class/net/eth0/mtu


1420


✔️ Теперь запросы выполняются:

docker compose run --rm service curl -v https://example.com


HTTP/2 200


И никакой магии 🐰🎩

#docker #compose #wireguard #ubuntu #mtu #networking #issue #solved
Please open Telegram to view this post
VIEW IN TELEGRAM
👏7
No-code, no cry? 🤔

Вместо того чтобы писать код, можно использовать no-code решения, но есть нюансы. О них рассказал руководитель функциональной зоны Python Даня Мясников в новой статье на Хабре. Это мы читаем!

Вынесли тезисы на карточки. В комментах можно хвалить и ругать no-code 🙏

#konturtech_habr
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Зачем тестировать зависимые библиотеки?

Расскажет Андрей Шарапов — в Контуре он занимается разработкой и поддержкой инфраструктуры Python:

Одна из задач нашей команды – поддержка общих библиотек для Python-разработчиков компании. Однажды после минорного релиза одной из библиотек сломался сценарий в другой, зависящей от нее библиотеке. Цена ошибки высока: она затрагивает сразу несколько проектов.

В карточках расскажу, как мы решили эту проблему и какие инструменты использовали.


Если вы сталкивались с подобным или у вас есть вопросы, пишите их в комменты — обсудим 🥪

#konturtech_python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1