Docker. Сеть

### Обзор сетей Docker Сеть Docker построена на Container Network Model (CNM), которая позволяет кому угодно создать свой собственный сетевой драйвер. Таким образом, у контейнеров есть доступ к разным типам сетей и они могут подключаться к нескольким сетям одновременно. Помимо различных сторонних сетевых драйверов, у самого Docker-а есть 4 встроенных: * Bridge: в этой сети контейнеры запускаются по умолчанию. Связь устанавливается через bridge-интерфейс на хосте. У контейнеров, которые используют одинаковую сеть, есть своя собственная подсеть, и они могут передавать данные друг другу по умолчанию.

Docker. Основы

## Главные компоненты Docker 1. демон Docker (Docker daemon), ответственный за создание, запуск и контроль работы контейнеров, а также за создание и хранение образов. 2. клиент Docker. Используется для диалога с демоном Docker по протоколу HTTP. По умолчанию это соединение устанавливается через сокет домена Unix, но также может использоваться TCP-сокет для поддержки соединений с удаленными клиентами или дескриптор файла для сокетов, управляемых systemd. Так как все операции обмена данными выполняются по протоколу HTTP, можно без затруднений организовать соединение с удаленными демонами Docker и разработать привязки (bindings) к нужному языку программирования, но при этом следует учитывать особенности реализации этих возможностей, например обязательное наличие контекста создания (building context), описанного в соответствующем разделе данной книги. Интерфейсы прикладного программирования, используемые для организации обмена данными с демоном, четко определены и подробно документированы, что позволяет разработчикам писать программы, взаимодействующие напрямую с демоном, без использования клиента Docker. Клиент и демон Docker распространяются как отдельные независимые бинарные файлы. 3. Реестры Docker используются для хранения и распространения образов. Реестром, выбираемым по умолчанию, явялется Docker Hub, на котором хранятся тысячи общедоступных образов, а также управляемые «официальные» образы.

Dockerfile. Основные команды

### Инструкции. Dockerfile 1. ADD Копирует файлы из контекста создания или из удаленных URL-ссылок в создаваемый образ. Если архивный файл добавляется из локального пути, то он будет автоматически распакован. Так как диапазон функциональности инструкции ADDдостаточно велик, в общем случае лучше воспользоваться более простой командой COPY для копирования файлов и каталогов в локальном контексте создания или инструкциями RUN с запуском curl или wget для загрузки удаленных ресурсов (с сохранением возможности обработки и удаления результатов загрузки в той же самой инструкции). 2. CMD Запускает заданную инструкцию во время инициализации контейнера. Если была определена инструкция ENTRYPOINT, то заданная здесь инструкция будет интерпретироваться как аргумент для ENTRY POINT (в этом случае необходимо использовать формат exec). Инструкция CMD замещается любыми аргументами, указанными в командеdockerrunпосле имени образа. В действительности выполняется только самая последняя инструкция CMD, а все предыдущие инструкции CMD будут отменены (в том числе и содержащиеся в основных образах). 3. COPY Используется для копирования файлов из контекста создания в образ. Имеет два формата:COPYисточникцельиCOPY["источник","цель"]– оба копируют файл или каталог из «источник» в контексте создания в «цель» внутри контейнера. Формат JSON-массива обязателен, если путь содержит пробелы. Можно использовать шаблонные символы для определения нескольких файлов или каталогов. Следует обратить особое внимание на невозможность указания путей «источника», расположенных вне пределов контекста создания (например, нельзя указать для копирования файл ../another_dir/myfile). 4. ENTRYPOINT Определяет выполняемый файл (программу) (и аргументы по умолчанию), запускаемый при инициализации контейнера. В эту выполняемую программу передаются как аргументы любые инструкции CMD или аргументы команды docker run, записанные после имени образа. Инструкции ENTRYPOINT часто используются для организации скриптов запуска, которые инициализируют переменные и сервисы перед обработкой всех передаваемых в образ аргументов.

Docker. Сеть

## Установление связи контейнеров с внешним миром Допустим, вы запустили веб-сервер внутри контейнера. Но как обеспечить связь сервера с внешним миром? Ответ прост – открыть нужные порты для общего доступа с помощью аргументов -p или -P в команде запуска. Такая команда перенаправляет порты хоста в контейнер. Например: ```

Openthread. Raspberry Pi ot-br-posix

1. Устанавливаем openhtread border router на raspberry ``` sudo apt-get update sudo apt-get install -y git git clone https://github.com/openthread/ot-br-posix