Эта статья - сборник разных вопросов и ответов на них, которые звучали в комментариях к моим предыдущим статьям (Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria, Cloak и все-все-все, Bleeding-edge обход блокировок с полной маскировкой: настраиваем сервер и клиент XRay с XTLS-Reality быстро и просто и других из той же серии) и в личных сообщениях.
User
Изучаем Docker, часть 5: команды
→ Часть 1: основы
→ Часть 2: термины и концепции
→ Часть 3: файлы Dockerfile
→ Часть 4: уменьшение размеров образов и ускорение их сборки
→ Часть 5: команды
→ Часть 6: работа с данными
![](https://habrastorage.org/getpro/habr/post_images/1e6/2a1/0a9/1e62a10a97cc799996073da56d2837d5.jpg)
Изучаем Docker, часть 4: уменьшение размеров образов и ускорение их сборки
→ Часть 1: основы
→ Часть 2: термины и концепции
→ Часть 3: файлы Dockerfile
→ Часть 4: уменьшение размеров образов и ускорение их сборки
→ Часть 5: команды
→ Часть 6: работа с данными
![](https://habrastorage.org/getpro/habr/post_images/4d1/a39/97f/4d1a3997f86da202d60bfbfb882efb9e.jpg)
Для того чтобы разобраться с тем, о чём мы будем тут говорить, вам будет полезно освежить в памяти то, о чём шла речь в третьей части этой серии материалов. А именно, там мы говорили об инструкциях файлов Dockerfile. Знание этих инструкций и тех особенностей Docker, которые мы обсудим сегодня, поможет вам оптимизировать файлы образов Docker.
Изучаем Docker, часть 3: файлы Dockerfile
→ Часть 1: основы
→ Часть 2: термины и концепции
→ Часть 3: файлы Dockerfile
→ Часть 4: уменьшение размеров образов и ускорение их сборки
→ Часть 5: команды
→ Часть 6: работа с данными
![](https://habrastorage.org/getpro/habr/post_images/29b/15a/6bf/29b15a6bfff06c617017301b30ed95c2.jpg)
Бублики — это инструкции в файле Dockerfile
Изучаем Docker, часть 2: термины и концепции
→ Часть 1: основы
→ Часть 2: термины и концепции
→ Часть 3: файлы Dockerfile
→ Часть 4: уменьшение размеров образов и ускорение их сборки
→ Часть 5: команды
→ Часть 6: работа с данными
![](https://habrastorage.org/getpro/habr/post_images/66e/dd8/d25/66edd8d255f738252f7ee97f5c42889a.jpg)
Изучаем Docker, часть 1: основы
Docker — это платформа, которая предназначена для разработки, развёртывания и запуска приложений в контейнерах. Слово «Docker» в последнее время стало чем-то вроде синонима слова «контейнеризация». И если вы ещё не пользуетесь Docker, но при этом работаете или собираетесь работать в сферах разработки приложений или анализа данных, то Docker — это то, с чем вы непременно встретитесь в будущем.
→ Часть 1: основы
→ Часть 2: термины и концепции
→ Часть 3: файлы Dockerfile
→ Часть 4: уменьшение размеров образов и ускорение их сборки
→ Часть 5: команды
→ Часть 6: работа с данными
![image](https://www.bigboxcontainers.co.za/wp-content/uploads/2015/07/GAD-mobile-gallery-1.jpg)
Если вы пока не знаете о том, что такое Docker, сейчас у вас есть шанс сделать первый шаг к пониманию этой платформы. А именно, освоив этот материал, вы разберётесь с основами Docker и попутно приготовите пиццу.
Настройка LEMP сервера для простых проектов. Инструкция для самых маленьких. Часть первая
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/56a/b08/315/56ab083155c7746aa1d1ea18e7e2a852.jpg)
Ведение
Приветствую читателей. В практике нашей компании часто появляется потребность в настройке серверов для простых односерверных проектов или небольших кластеров. В этой статье я бы хотел рассказать вам о нашем опыте подобной настройки, выделить особенности, которые могут вам пригодиться при дальнейшем администрировании. Статья предназначена для людей, которые только вникают в администрирование, а также для тех, кто самостоятельно администрирует свой небольшой проект и хочет набраться опыта в этом деле. Если вы являетесь опытным администратором, то можете смело пропускать данный материал.
Целью серии статей является описание подготовки работы сервера со стоком LEMP (Linux, Nginx, MySQL, PHP, Apache), развертывание стэка и поднятие на нем работающих площадок. Инструкция подойдет для небольших Bitrix проектов, а тажке для проектов развернутых под любой популярной CMS.
Не смотря на то, что тема уже достаточно подробно отражена в сети, мы решили подробно описать общие стандарты администрирования с нуля, по-скольку регулярно получаем большое количество базовых вопросов от людей, так или иначе, связанных с нашей сферой.
Большая часть проектов базируется на ОС Ubuntu, Debian в статьях будут отражены настройки для этих систем.
В данной статье будут описаны такие вещи как:
Борьба за ресурсы, часть 6: cpuset или Делиться не всегда правильно
![](https://habrastorage.org/webt/hj/ig/zd/hjigzdvn7vwbunpdkqiqjcdmqde.png)
Разумеется, можно. Иначе мы бы не выбрали этот вопрос в качестве темы сегодняшней статьи.
Борьба за ресурсы, часть 5: Начиная с нуля
![](https://habrastorage.org/webt/7y/lx/mw/7ylxmwyn3vgxxrj7b6utthzftwk.png)
Однако cgroups в Red Hat Enterprise Linux 6 и сегодня на многое способны, что мы сегодня и проиллюстрируем.
Борьба за ресурсы, часть 4: Замечательно выходит
![](https://habrastorage.org/webt/ny/q2/o8/nyq2o86wb7aywvoh0rovttforg4.png)
Особенно интересно здесь то, что мы вступаем на территорию, где изменения настроек, которые вносятся уже после запуска системы, гораздо менее важны, чем решения, которые принимаются еще до ее развертывания.
Борьба за ресурсы, часть 3: Памяти мало не бывает
![](https://habrastorage.org/webt/to/-f/1d/to-f1denfarqdbt2kwl5nc4rdh8.png)
Что касается оперативной памяти, то systemd предлагает только один способ регулировки, а именно…
Борьба за ресурсы, часть 2: Играемся с настройками Cgroups
![](https://habrastorage.org/webt/mh/c7/4p/mhc74pjs5mq_w3d404hmfmxukfy.png)
Однако, прежде чем что-то менять, всегда полезно узнать, как все устроено сейчас.
Глубокое погружение в Linux namespaces, часть 4
Часть 1
Часть 2
Часть 3
Часть 4
В завершающем посте этой серии мы рассмотрим Network namespaces. Как мы упоминали в вводном посте, network namespace изолирует ресурсы, связанные с сетью: процесс, работающий в отдельном network namespace, имеет собственные сетевые устройства, таблицы маршрутизации, правила фаервола и т.д. Мы можем непосредственно увидеть это на практике, рассмотрев наше текущее сетевое окружение.
Глубокое погружение в Linux namespaces, часть 3
Часть 1
Часть 2
Часть 3
Часть 4
Mount namespaces изолируют ресурсы файловых систем. Это по большей части включает всё, что имеет отношение к файлам в системе. Среди охватываемых ресурсов есть файл, содержащий список точек монтирования, которые видны процессу, и, как мы намекали во вступительном посте, изолирование может обеспечить такое поведение, что изменение списка (или любого другого файла) в пределах некоторого mount namespace инстанса M не будет влиять на этот список в другом инстансе (так что только процессы в M увидят изменения)
Глубокое погружение в Linux namespaces, часть 2
Часть 1
Часть 2
Часть 3
Часть 4
В предыдущей части мы только окунули пальцы ног в воды namespace и при этом увидели, как это было просто — запустить процесс в изолированном UTS namespace. В этом посте мы осветим User namespace.
Среди прочих ресурсов, связанных с безопасностью, User namespaces изолирует идентификаторы пользователей и групп в системе. В этом посте мы сосредоточимся исключительно на ресурсах user и group ID (UID и GID соответственно), поскольку они играют фундаментальную роль в проведении проверок разрешений и других действий во всей системе, связанных с безопасностью.
В Linux эти ID — просто целые числа, которые идентифицируют пользователей и группы в системе. И каждому процессу назначаются какие-то из них, чтобы задать к каким операциями/ресурсам этот процесс может и не может получить доступ. Способность процесса нанести ущерб зависит от разрешений, связанных с назначенными ID.
Глубокое погружение в Linux namespaces
Часть 1
Часть 2
Часть 3
Часть 4
В этой серии постов мы внимательно рассмотрим один из главных ингредиентов в контейнере – namespaces. В процессе мы создадим более простой клон команды docker run
– нашу собственную программу, которая будет принимать на входе команду (вместе с её аргументами, если таковые имеются) и разворачивать контейнер для её выполнения, изолированный от остальной системы, подобно тому, как вы бы выполнили docker run
для запуска из образа.
Настраиваем двухступенчатый WireGuard для выхода из страны
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/73a/b44/4ab/73ab444ab737086ae79634bb9796faf4.png)
У Wireguard есть немало прекрасного, включая его простоту реализации, скорость и минималистичные клиенты, которые не вызывают проблем у пользователей.
В начале августа некоторые интернет операторы и провайдеры начали блокировку протокола WireGuard в РФ по его рукопожатию.
Лично испытывал блокировку у Мегафон и Теле2, но не заметил у Ростелеком. VPN по-прежнему работал через последнего.
Очень не хотелось отказываться от Wireguard в пользу прокси-серверов в духе VLESS+TLS-Vision, в виду того, что все наши пользователи уже сильно привыкли именно к Wireguard.
Поэтому вариант с кардинальной сменой клиентского софта не рассматривался.
Поскольку трафик Wireguard блокируется только на зарубежные адреса было принято решение добавить еще один хоп в систему, а начальное подключение осуществлять к серверу в РФ.
Механизмы контейнеризации: cgroups
![механизмы контейнеризации](https://habrastorage.org/getpro/habr/post_images/40e/7a6/2f0/40e7a62f0009c2a5b6f5119aeaf12c4c.png)
Продолжаем цикл статей о механизмах контейнеризации. В прошлый раз мы говорили об изоляции процессов с помощью механизма «пространств имён» (namespaces). Но для контейнеризации одной лишь изоляции ресурсов недостаточно. Если мы запускаем какое-либо приложение в изолированном окружении, мы должны быть уверены в том, что этому приложению выделено достаточно ресурсов и что оно не будет потреблять лишние ресурсы, нарушая тем самым работу остальной системы. Для решения этой задачи в ядре Linux имеется специальный механизм — cgroups (сокращение от control groups, контрольные группы). О нём мы расскажем в сегодняшней статье.
Механизмы контейнеризации: namespaces
![namespaces](https://habrastorage.org/getpro/habr/post_images/375/098/1be/3750981be6a67aa0e2ec4687455b81c6.png)
Последние несколько лет отмечены ростом популярности «контейнерных» решений для ОС Linux. О том, как и для каких целей можно использовать контейнеры, сегодня много говорят и пишут. А вот механизмам, лежащим в основе контейнеризации, уделяется гораздо меньше внимания.
Все инструменты контейнеризации — будь то Docker, LXC или systemd-nspawn,— основываются на двух подсистемах ядра Linux: namespaces и cgroups. Механизм namespaces (пространств имён) мы хотели бы подробно рассмотреть в этой статье.
Начнём несколько издалека. Идеи, лежащие в основе механизма пространств имён, не новы. Ещё в 1979 году в UNIX был добавлен системный вызов chroot() — как раз с целью обеспечить изоляцию и предоставить разработчикам отдельную от основной системы площадку для тестирования. Нелишним будет вспомнить, как он работает. Затем мы рассмотрим особенности функционирования механизма пространств имён в современных Linux-системах.
Information
- Rating
- Does not participate
- Registered
- Activity