Анонсирован (https://blog.docker.com/2014/12/advancing-docker-security-do.../) релиз инструментария для управления изолированными Linux-контейнерами Docker 1.4, предоставляющего высокоуровневый API для манипуляции контейнерами на уровне изоляции отдельных приложений. В частности, Docker позволяет не заботясь о формировании начинки контейнера запускать произвольные процессы в режиме изоляции и затем переносить и клонировать сформированные для данных процессов контейнеры на другие серверы, беря на себя всю работу по созданию, обслуживанию и сопровождению контейнеров. Код Docker написан на языке Go и распространяется (https://github.com/dotcloud/docker/) под лицензией Apache 2.0. Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Для создания контейнеров предлагается использовать libcontainer (обёртка над namespaces и cgroups), также возможно применение lxc (http://lxc.sourceforge.net/), libvirt, systemd-nspawn и других систем изоляции. Для формирования контейнера достаточно загрузить базовый образ окружения (docker pull base), после чего можно запускать в изолированных окружениях произвольные приложения (например, для запуска bash можно выполнить "docker run -i -t base /bin/bash").
Из добавленных в Docker 1.4 новшеств (https://github.com/docker/docker/blob/master/CHANGELOG.md) можно отметить:
- Новый драйвер для организации хранилища поверх многослойной файловой системы OverlayFS (http://www.opennet.dev/opennews/art.shtml?num=40947), код которой вошёл в состав ядра Linux 3.18 (http://www.opennet.dev/opennews/art.shtml?num=41210);
- В управляющий демон добавлена опция "-label" для установки меток в форме "ключ=значение", выводимых при выполнении команды "docker info";
- Поддержка установки переменных окружения через указание в Dockerfile опции "ENV name=value name2=value2...";
- В вывод команды "docker info" добавлено отображение полей с идентификатором и именем;
- Возможность фильтрации событий по имени события, контейнеру и образу окружения;
- Команда "docker cp" расширена поддержкой копирования данных из разделов контейнера.
Одновременно доступен корректирующие выпуск Docker 1.3.3, в котором устранены три уязвимости (https://groups.google.com/forum/#!msg/docker-user/nFAz-B-n4B...) (проблемы также исправлены в Docker 1.4.0), которые были обнаружены в процессе аудита после выявления (http://www.opennet.dev/opennews/art.shtml?num=41124) в ноябре двух критических проблем с безопасностью. Уязвимости проявляются при использовании готовых образов или образов, собранных Dockerfile, загруженных из сторонних непроверенных источников. Как и прошлые уязвимости, новые проблемы позволяют выполнить код или получить доступ к внешней ФС в процессе запуска или обработки специально модифицированного образа контейнера.
- CVE-2014-9356 - возможность записи во внешние части ФС и выхода за пределы контейнера через манипуляции с абсолютными символическими ссылками;
- CVE-2014-9357 - повышение привилегий (выполнение кода с правами root) в процессе декодирования специально оформленных архивов LZMA (.xz);
- CVE-2014-9358 - проблемы с проверкой идентификатора образа контейнера, которые могут быть использованы для подмены загружаемого из репозитория образа или выхода за пределы допустимого файлового пути.
Дополнительно можно отметить публикацию (http://blog.docker.com/2014/12/announcing-docker-machine-swa.../) компанией Docker трёх новых инструментов:
- Docker Machine (http://github.com/docker/machine) - система для быстрого развёртывание хостов в гостевых окружениях систем виртуализации, предназначенных для организации контейнерной виртуализации приложений на основе Docker. Осуществляет создание начинки сервера, установку на него Docker и настройку клиента для работы с данным сервером. Поддерживается создание серверов в виртуальных окружениях VirtualBox, Digital Ocean и Microsoft Azure;
- Docker Swarm (https://github.com/docker/swarm/) - средства кластеризации для упакованных в контейнеры приложений. Предоставляет управлять кластером из нескольких хостов Docker (например, созданных с использованием Docker Machine) в форме работы с одним виртуальным хостом. Так как Swarm использует штатный Docker API, он может применяться для управления и другими поддерживающими данный API инструментами, такими как dokku, fig, krane, flynn, deis, docker-ui, shipyard, drone.io, Jenkins;
- Docker Compose (https://github.com/docker/docker/issues/9459) - система поставки приложения с разделением на несколько контейнеров.
URL: https://blog.docker.com/2014/12/advancing-docker-security-do.../
Новость: http://www.opennet.dev/opennews/art.shtml?num=41251