Lazydocker: Революция в управлении Docker! Полный гайд от установки до про-использования

Lazydocker: Революция в управлении Docker! Полный гайд от установки до про-использования

Что такое Lazydocker?

Lazydocker — это терминальная утилита с текстовым пользовательским интерфейсом (TUI) для управления Docker-контейнерами, образами, томами и сетями. Она предоставляет простой и интуитивно понятный интерфейс для выполнения повседневных операций с Docker без необходимости запоминать сложные команды.


Lazydocker demo

Рисунок 1: Анимированое демо (откроется в новом окне)


Lazydocker demo 3

Рисунок 2: Анимированое демо (откроется в новом окне)

Преимущества Lazydocker:

  • Визуальный интерфейс для всех Docker-объектов
  • Быстрый доступ к логам и статистике
  • Упрощенное выполнение сложных команд
  • Интерактивный мониторинг в реальном времени
  • Кроссплатформенность

Установка и настройка

Установка через скрипт (Linux/macOS)

# Скачать и установить lazydocker
curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash

# Или через brew (macOS и Linux)
brew install lazydocker

Установка через Go

go install github.com/jesseduffield/lazydocker@latest

Установка через Docker

# Запуск как контейнер
docker run --rm -it -v \
  /var/run/docker.sock:/var/run/docker.sock \
  -v /path/to/config:/.config/jesseduffield/lazydocker \
  lazyteam/lazydocker

Установка в Windows

# Через Chocolatey
choco install lazydocker

# Через Scoop
scoop bucket add extras
scoop install lazydocker

Проверка установки

lazydocker --version

ЧИТАТЬ ДАЛЕЕ …

Ускоряем разработку: Локальный Docker Registry Mirror для всей команды

Зачем это нужно всей команде?

На самом деле я использую локальное зеркало не только для виртуальной машины с GitLab Runner'ом, но и на всех других машинах в сети указываю это зеркало. Зачем каждый раз качать одни и те же образы, если можно иметь локальную копию?

Данная проблема хоть и не частая, но, возможно знакома каждому:

Pulling docker image python:3.12...
Elapsed time: 15 minutes 59 seconds

Казалось бы, что сложного, скачать образ при деплое? Но по каким-то странным причинам это занимает столько времени. Можно конечно искать виноватых, кто старается запретить интернет своей цензурой, но проще решить проблему радикально.

Решение: Локальный кэш для всей команды или домашней студии!

Преимущества для всей команды

🚀 В 10-100 раз быстрее загрузка образов
📉 На 90% меньше интернет-трафика
🌐 Не зависит от доступности Docker Hub
👥 Все разработчики работают быстрее
💾 Повторное использование одних и тех же образов

Что такое Docker Registry Mirror?

Это локальный кэш-прокси для Docker образов. Первый раз образ качается из интернеты, а все последующие разы — из локального кэша, доступного всем в сети.

ЧИТАТЬ ДАЛЕЕ …

Что такое rel=»alternate» hreflang=»x-default» в HTML. Полное руководство с примерами.

В мире веб-разработки и SEO часто встречаются элементы разметки, которые кажутся загадочными на первый взгляд. Один из таких — конструкция <link rel="alternate" hreflang="x-default" href="https://xxx.xxx/">. Давайте разберемся, что она означает и как правильно её использовать.

Что такое rel="alternate"?

Атрибут rel="alternate" в HTML-разметке сообщает поисковым системам, что по указанному адресу находится альтернативная версия текущей страницы. Сам по себе этот атрибут может использоваться для разных целей:

  • Версия страницы на другом языке
  • Версия в другом формате (например, PDF)
  • Версия для печати
  • RSS- или Atom-фид
<!-- Пример альтернативной версии в PDF -->
<link rel="alternate" type="application/pdf" href="https://example.com/document.pdf" title="PDF версия">

ЧИТАТЬ ДАЛЕЕ …

Команда su в Linux: Как стать другим пользователем (даже без пароля)

Команда su в Linux: Как стать другим пользователем (даже без пароля)

Команда su (от Substitute User или Switch User) — это фундаментальный инструмент для любого, кто работает с Linux. Она позволяет сменить текущего пользователя в системе. Но что, если вам нужно переключиться на пользователя, у которого нет пароля, как у системных пользователей www-data или docker? А если после переключения команды падают с ошибками? Эта статья — исчерпывающее руководство по работе с su, sudo и решению сопутствующих проблем.

1. Что такое su и как она работает по умолчанию?

Базовый синтаксис команды прост:

su [опции] [логин_пользователя]
  • Если не указать логин, команда попытается переключиться на root.
  • По умолчанию su требует ввести пароль целевого пользователя.

Пример 1: Стандартное использование

# Стать root'ом (запросит пароль root)
$ su
Password: <вводим_пароль_root>

# Стать пользователем 'alice' (запросит пароль alice)
$ su alice
Password: <вводим_пароль_alice>

Проблема в том, что у многих системных пользователей (созданных для запуска служб) просто нет пароля. Попытка выполнить su www-data завершится ошибкой.

$ su www-data
Password: <любая_попытка_ввести_пароль>
su: Authentication failure

ЧИТАТЬ ДАЛЕЕ …

Как я восстановил папку после `rm -rf app/` с помощью Docker и Git

Катастрофа с rm -rf

Работая над проектом, я случайно выполнил команду rm -rf app/ и удалил папку с исходным кодом. Паника наступила мгновенно: проект ещё не был отправлен в удалённый репозиторий, и я испугался, что потерял все последние изменения файлов. К счастью, у меня были два спасительных варианта: ранее собранный Docker-контейнер и локальные Git-коммиты. В этой статье я расскажу, как я восстановил папку app/ сначала из контейнера, а затем из Git для сверки, и поделюсь командами, которые помогли мне. Если вы попали в похожую ситуацию, это руководство для вас!

Шаг 1: Осознание проблемы

После выполнения rm -rf app/ я понял, что папка с кодом моего Telegram-бота исчезла и локальные файлы пропали. PyCharm в локальной истории показал, что папки была удалена, но к сожалению он такое откатить не может. Значит нужно вытаскивать файлы от туда, где они были до момента удаления, а это:

  • Docker-контейнер, который я недавно собирал и запускал с помощью make local-build. К счастью, я не успел выполнить очистку (make clean), так что контейнер и образ были на месте.
  • Локальный Git-репозиторий с несколькими коммитами, где папка app/ ещё существовала.

Я решил попробовать оба способа восстановления, чтобы вернуть файлы и убедиться в их целостности.

ЧИТАТЬ ДАЛЕЕ …

Магия Python: @classmethod, @staticmethod и @property на практике

Магия Python: @classmethod, @staticmethod и @property на практике

Декораторы классов — мощный инструмент для создания элегантного ООП-кода в Python. Но чтобы использовать их эффективно, нужно понимать разницу между @classmethod, @staticmethod и @property. Разберём каждый на реалистичных примерах с сравнением подходов.

@property: Контролируемый доступ к атрибутам

Проблема без декоратора:
Без @property для валидации данных приходится использовать методы-сеттеры, что ломает естественность работы с атрибутами.

class UserWithoutProperty:
    def __init__(self, name):
        self.name = name
        self._age = 0

    def get_age(self):
        return self._age

    def set_age(self, value):
        if not (0 < value < 120):
            raise ValueError("Invalid age")
        self._age = value

# Неудобное использование:
user = UserWithoutProperty("Alice")
user.set_age(25)  # Вызов метода вместо присваивания
print(user.get_age())  # Не как обычное свойство

Решение с @property:
Декоратор превращает методы в атрибуты с логикой:

class User:
    def __init__(self, name):
        self.name = name
        self._age = 0

    @property
    def age(self):
        return f"Возраст: {self._age} лет"

    @age.setter
    def age(self, value):
        if not (0 < value < 120):
            raise ValueError("Недопустимый возраст")
        self._age = value

# Естественное использование:
user = User("Bob")
user.age = 30  # Вызывает сеттер с валидацией
print(user.age)  # Возраст: 30 лет (геттер форматирует данные)

Плюсы:
Инкапсуляция внутреннего состояния
Валидация при установке значений
Ленивые вычисления (например, загрузка данных по требованию)
Совместимость с обычным доступом к атрибутам

Минусы:
Избыточность для простых атрибутов без логики
Неочевидность побочных эффектов при чтении

ЧИТАТЬ ДАЛЕЕ …

Стек и очередь: что это такое и как они работают в жизни и программировании

Введение

В программировании и компьютерных науках часто встречаются такие структуры данных, как стек и очередь. Они помогают эффективно управлять информацией, но их принципы работы можно легко понять на примерах из повседневной жизни. Давайте разберемся, что это за структуры, как они функционируют и где применяются.

Что такое очередь (FIFO)?

Очередь (Queue) — это структура данных, работающая по принципу FIFO (First In, First Out), что означает «первый пришел — первый ушел».
Пример из жизни — Представьте очередь в магазине:

Первый человек встал в очередь — он первым подойдет к кассе и уйдет.
Последний вставший человек будет обслуживаться последним.

Так работает любая очередь: будь то очередь в банке, на почте или даже пробка на дороге (первая машина, которая въехала в пробку, первой из нее и выедет, если движение возобновится).

Как очередь работает в программировании?
В коде очередь используется, например:

Обработка задач (первая отправленная задача выполняется первой).
Буферизация данных (например, при загрузке файлов).
Очередь сообщений в мессенджерах (первое отправленное сообщение приходит раньше остальных).

ЧИТАТЬ ДАЛЕЕ …

Включение QEMU Guest Agent в Proxmox

Перед установкой агента в гостевой ОС убедитесь, что он включён в настройках виртуальной машины:

  1. Остановите ВМ (если она запущена).
  2. В веб-интерфейсе Proxmox выберите ВМ → HardwareOptionsQEMU Guest Agent → включите галочку Enable.
  3. Сохраните изменения и запустите ВМ.

Установка гостевого агента на примере Debian 12.10 / Ubuntu 24.04.2

  1. Подключитесь к виртуальной машине (через консоль Proxmox или SSH).
  2. Обновите пакеты и установите qemu-guest-agent:
    sudo apt update
    sudo apt install -y qemu-guest-agent
  3. Запустите службу и включите автозагрузку:
    sudo systemctl start qemu-guest-agent
    sudo systemctl enable qemu-guest-agent
  4. Проверьте статус:
    sudo systemctl status qemu-guest-agent

    Должен быть статус active (running).

Установка агента одной командой:

sudo apt update && sudo apt install -y qemu-guest-agent && sudo systemctl start qemu-guest-agent && sudo systemctl enable qemu-guest-agent && sudo systemctl status qemu-guest-agent

ЧИТАТЬ ДАЛЕЕ …

Проверка переменной на None в Python

Проверка переменной на None в Python

Одной из общих задач при написании кода на Python является проверка того, является ли значение переменной None или нет. В Python есть несколько способов сделать это, но некоторые из них являются более предпочтительными по сравнению с другими.

Рассмотрим три самых распространенных способа проверки значения на None:

Представьте, что у вас есть коробка, и вы хотите проверить, пуста ли она или нет.

Вариант 1: if val != None:

Аналогия: Вы открываете коробку и смотрите, пуста ли она. Если внутри что-то есть, вы говорите: "Коробка не пустая".

val = None
if val != None:
    print("Коробка не пустая")
else:
    print("Коробка пустая")

Объяснение: Здесь вы просто проверяете, не равно ли содержимое коробки (переменная val) значению None.

ЧИТАТЬ ДАЛЕЕ …

Тест с ответами по теме «Острые отравления неопиоидными анальгезирующими, жаропонижающими и противоревматическими средствами (по утвержденным клиническим рекомендациям) — 2024»

Вашему вниманию представляется Тест с ответами по теме «Острые отравления неопиоидными анальгезирующими, жаропонижающими и противоревматическими средствами (по утвержденным клиническим рекомендациям) — 2024» в рамках программы НМО: непрерывного медицинского образования для медицинских работников (врачи, медсестры и фармацевты). Тест с ответами по теме «Острые отравления неопиоидными анальгезирующими, жаропонижающими и противоревматическими средствами (по утвержденным клиническим рекомендациям) — 2024» в рамках программы НМО: непрерывного медицинского образования для медицинского персонала высшего и среднего звена (врачи, медицинские сестры и фармацевтические работники) позволяет успешнее подготовиться к итоговой аттестации и/или понять данную тему.

1. Ацетилсaлицилoвaя кислoтa является ингибитoрoм

1) ЦОГ-1 и ЦОГ-2, причем ЦОГ-2 бoлее чувствительнa;+
2) ЦОГ-2;
3) ЦОГ-1;
4) не является ингибитoрoм ЦОГ;
5) ЦОГ-1 и ЦОГ-2, причем ЦОГ-1 бoлее чувствительнa.

2. Брoнхoспaзм при oтрaвлении НПВП нaибoлее хaрaктерен для oтрaвлений

1) ингибитoрaми ЦОГ-2;
2) прoизвoдными пирaзoлoнa;
3) фенaмaтaми;
4) сaлицилaтaми;+
5) прoизвoдными фенилуксуснoй кислoты.

3. В прoцессе дезoргaнизaции цитoлеммa гепaтoцитoв приoбретaет aнтигенные свoйствa, чтo мoжет привoдить к

1) усилению синтезa желчи;
2) вoсстaнoвлению нoрмaльнoй структуры печенoчнoй ткaни;
3) стимуляции регенерaции печени;
4) индукции aутoиммуннoгo oтветa и вoспaлению;+
5) снижению рискa фибрoзa.

ЧИТАТЬ ДАЛЕЕ …

Почему обучение сегодня доступно как никогда, но важно оставаться бдительным

Современный мир предоставляет уникальные возможности для обучения. Благодаря развитию технологий и появлению множества онлайн-ресурсов, каждый человек может освоить новые навыки или углубить уже имеющиеся знания, не выходя из дома. Это особенно ценно в условиях ограниченного времени и загруженного графика. Онлайн-обучение позволяет экономить часы на дорогу до места учебы и обратно, делая процесс максимально комфортным и эффективным.

Однако, как и во всем, здесь есть свои подводные камни. С ростом популярности онлайн-образования появилось множество недобросовестных платформ, которые используют обманные методы для привлечения клиентов. Одной из самых распространенных схем является оформление кредитов на обучение без полного информирования клиента о его обязательствах. В результате люди могут оказаться в долговой яме, даже не начав обучение.

Чтобы избежать таких ситуаций, важно быть внимательным при выборе образовательного ресурса. Первое, что стоит сделать, — это поискать отзывы о платформе. Обращайте внимание на дату публикации отзыва: чем он свежее, тем лучше. Однако помните, что некоторые компании заказывают фальшивые отзывы за деньги. Чтобы распознать такие комментарии, сравните их тексты. Если вы заметили повторяющиеся фразы или шаблонные формулировки, это повод задуматься о достоверности информации.

Также рекомендуется изучить несколько независимых источников. Например, портал https://edtechs.ru/prof/ предоставляет полезную информацию о современных образовательных трендах и проверенных платформах. Здесь можно найти обзоры курсов, советы по выбору направления и другие материалы, которые помогут принять взвешенное решение.

Главный совет — не торопитесь. Прежде чем оформлять кредит или подписывать договор, тщательно изучите условия обучения, стоимость и программу курса. Помните, что качественное образование требует времени и усилий, а мошенники часто играют на желании получить быстрый результат. Будьте терпеливы и критичны в своем выборе.

Обучение — это инвестиция в себя, которая может значительно улучшить качество вашей жизни. Но чтобы эта инвестиция оказалась успешной, важно выбирать надежные и проверенные ресурсы. Оставайтесь бдительными, изучайте информацию и принимайте решения осознанно. Тогда обучение станет не только полезным, но и безопасным шагом на пути к вашим целям.

ЧИТАТЬ ДАЛЕЕ …

Заметка

Изменение swap раздела в Proxmox

Отключить подкачку

swapoff -v /dev/pve/swap

Увеличить размер раздела

lvm lvresize /dev/pve/swap -L +8G

Отметить раздел как swap

mkswap /dev/pve/swap

Включить swap

swapon -va

Как можно отблагодарить:

  • Оформить удобную для вас подписку на Boosty.to
  • Разово поддержать через DonationAlerts
Модуль 2. Домашняя работа по уроку "Цикл for. Элементы списка. Полезные функции в цикле"

Модуль 2. Домашняя работа по уроку «Цикл for. Элементы списка. Полезные функции в цикле»

Цель: закрепить навык решения задач при помощи цикла for, применив знания об основных типах данных.

Задача "Всё не так уж просто":
Дан список чисел numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Используя этот список составьте второй список primes содержащий только простые числа.
А так же третий список not_primes, содержащий все не простые числа.
Выведите списки primes и not_primes на экран(в консоль).

Пункты задачи:

  • Создайте пустые списки primes и not_primes.
  • При помощи цикла for переберите список numbers.
  • Напишите ещё один цикл for (вложенный), где будут подбираться делители для числа из 1ого цикла.
  • Отметить простоту числа можно переменной is_prime, записав в неё занчение True перед проверкой.
  • В процессе проверки на простоту записывайте числа из списка numbers в списки primes и not_primes в зависимости от значения переменной is_prime после проверки (True — в prime, False — в not_prime).
  • Выведите списки primes и not_primes на экран(в консоль).

ЧИТАТЬ ДАЛЕЕ …

Модуль 2. Домашняя работа по уроку "Стиль кода часть II. Цикл While"

Модуль 2. Домашняя работа по уроку «Стиль кода часть II. Цикл While»

Цель: применить навыки создания цикла while, а так же применения операторов break и continue.

Задача "Нули ничто, отрицание недопустимо!":
Дан список чисел [42, 69, 322, 13, 0, 99, -5, 9, 8, 7, -6, 5]
Нужно выписывать из этого списка только положительные числа до тех пор, пока не встретите отрицательное или не закончится список (выход за границу).

Пункты задачи:

  • Запишите исходный список в переменную my_list.
  • Напишите цикл while с соответствующими задаче условиями.
  • Используйте операторы прерывания/продолжения цикла в соответствии с условиями задачи.

ЧИТАТЬ ДАЛЕЕ …

Модуль 2. Домашняя работа по уроку "Условная конструкция. Операторы if, elif, else"

Модуль 2. Домашняя работа по уроку «Условная конструкция. Операторы if, elif, else»

Цель: Применить навыки создания условных конструкций и знания операторов if, else, elif / and, or, not.

Задача "Все ли равны?":
На вход программе подаются 3 целых числа и записываются в переменные first, second и third соответственно.
Ваша задача написать условную конструкцию (из ifelifelse), которая выводит кол-во одинаковых чисел среди 3-х введённых.

Пункты задачи:

  1. Если все числа равны между собой, то вывести 3
  2. Если хотя бы 2 из 3 введённых чисел равны между собой, то вывести 2
  3. Если равных чисел среди 3-х вообще нет, то вывести 0

ЧИТАТЬ ДАЛЕЕ …