Posts categorized under: Docker

Автотесты для образов docker

Docker сильно удобная штука для упаковки и доставки кода на сервера. Тестирование кода - задача рутинная и уже давно легко автоматизируемая.

А что на счет готовых образов docker? Мы же пишем Dockerfile, в котором есть определенные инструкции по установке пакетов, открытых портов и т.п. Это такой же код, как и само наше приложение внутри доккера. Его тоже стоит покрывать тестами и для этого тоже есть инструменты.

Goss

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

Пример goss.yml из документации:

port:
  tcp:22:
    listening: true
    ip:
    - 0.0.0.0
  tcp6:22:
    listening: true
    ip:
    - '::'
service:
  sshd:
    enabled: true
    running: true
user:
  sshd:
    exists: true
    uid: 74
    gid: 74
    groups:
    - sshd
    home: /var/empty/sshd
    shell: /sbin/nologin
group:
  sshd:
    exists: true
    gid: 74
process:
  sshd:
    running: true

Описывать тут особо нечего, все просто и понятно. Для доккера есть dgoss враппер, который позволяет писать такие тесты для доккера.

Интегрировать такие тесты в CI/CD процесс не сложно и весьма полезно.

Режем рекламу в домашней сети

Сейчас стало ну уж сильно большое количество рекламы в интернете. Предлагаю сделать интернет серфинг немного проще с помощью собственного DNS сервера.

Что понадобится:

  • git
  • docker
  • docker-compose

git

sudo apt install git

docker

Поскольку все это крутится внутри контейнеров docker, то эта штука нам 100% понадобится. Все действия относятся к Ubuntu Linux, т.к. именно его я использую дома и в работе.

Устанавливается она согласно документации достаточно просто:

curl -sSL https://get.docker.com/ | sh

После завершения работы скрипта docker будет готов и им можно пользоваться.

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

docker-compose

Docker Compose предназначен для планирования и организации процессов в контейнерах Docker (запуска, отключения, создания межконтейнерных соединений и томов, и т.п.).

Установка не сложнее самого докера:

curl -L "https://github.com/docker/compose/releases/download/1.8.1/docker-compose-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Запуск собственного фильтра рекламы

Клонируем репозиторий

Логичное действие и не нуждается, наверное, в пояснениях, зачем это делать. :)

sudo mkdir /opt/docker
sudo chown <user> /opt/docker
git clone https://github.com/DmitriyLyalyuev/dnsmasq-no-ads /opt/docker/dnsmasq
cd /opt/docker/dnsmasq

Стартуем DNS сервер

docker-compose up -d

Осталось исправить в DHCP настройках роутера IP адрес DNS сервера на ваш.

Обновление списка рекламных доменов

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

cd /opt/docker/dnsmasq
docker-compose restart dnsmasq

Белый список

Иногда нам необходимо исключить из фильтра какие-то домены. Для этого достаточно добавить их в переменную WHITE_LIST в файле docker-compose.yml