The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск cистемы управления контейнерной виртуализацией Docker 17.06

30.06.2017 11:47

Представлен релиз инструментария для управления изолированными Linux-контейнерами Docker 17.06, предоставляющего высокоуровневый API для манипуляции контейнерами на уровне изоляции отдельных приложений. Docker позволяет, не заботясь о формировании начинки контейнера, запускать произвольные процессы в режиме изоляции и затем переносить и клонировать сформированные для данных процессов контейнеры на другие серверы, беря на себя всю работу по созданию, обслуживанию и сопровождению контейнеров. Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Код Docker написан на языке Go и распространяется под лицензией Apache 2.0.

Docker 17.06 является первым выпуском, который построен на основе проекта Moby, реализующего идею построения систем контейнерной изоляции в виде набора связываемых между собой универсальных компонентов. Выпуск также сформирован в рамках новой нумерации версий (год.месяц) и раздельным формированием релизов Community Edition (CE) и Enterprise Edition (EE).

Другие изменения:

  • Поддержка многоступенчатой сборки (multi-stage), позволяющей формировать более компактные образы Docker, используя единый Dockerfile. Многоступенчатая сборка основана на использовании промежуточных образов, применяемых для сборки компонентов итогового образа. Например, для создания образа с Java-приложением, можно создать промежуточный образ, включающий Apache Maven и прочие инструменты, необходимые для сборки, но не требуемые для выполнения приложения. При таком разделении при размере промежуточного образа в 620 Мб, размер итогового образа составит всего 145 Мб. Число стадий не лимитировано, например, для формирования единого образа программы AtSea используется объединение результатов двух промежуточных стадий - первой на базе node.js для сборки приложения ReactJS и второй на базе Maven для компиляции приложения Spring Boot, при этом финальный образ поставляется без Maven и node.js;
  • В команде "docker build" реализована возможность использовать значение аргументов, передаваемых через опцию "--build-arg" в поле FROM";
  • Метрики со статистикой о работе управляющего демона теперь могут быть не только запрошены через API, но и переданы плагинам и любым внешним сервисам через обработчик "/metrics";
  • Добавлена поддержка оформления в виде плагинов драйверов для накопления и обработки логов;
  • В разряд стабильных переведена команда "docker service logs", позволяющая упростить отладку сервисов за счёт избавления администратора от ручного сбора логов из отдельных хостов и контейнеров. При выполнении "docker service logs" логи из всех контейнеров, в которых выполняется указанный сервис, будут перенаправлены в текущую консоль;
  • Реализована возможность прикрепления сервисов к внутриузловым сетям (node-local), таким как сети с типами Host, Macvlan, IPVlan и Bridge, а также создаваемым через плагины локального действия. Например, для сети Macvlan можно создать специфичные сетевые конфигурации на рабочих узлах и затем создать общую сеть на управляющем узле, которая объединит эти конфигурации;
  • Расширены возможности режима Swarm, предоставляющего средства кластеризации для упакованных в контейнеры приложений. Swarm даёт возможность управлять кластером из нескольких хостов Docker по аналогии с работой с одним виртуальным хостом. В Docker 17.06 добавлен новый объект настройки для режима swarm, который позволяет безопасно передавать информацию о настройках. Во встроенной системе PKI (public key infrastructure) добавлена команда "docker swarm ca --rotate" для инициирования принудительной ротации ключей. В режиме swarm реализована возможность обработки событий ("docker events"), позволяющих средствам мониторинга в реальном режиме времени получить информацию о сервисах, узлах и сетях.


  1. Главная ссылка к новости (https://blog.docker.com/2017/0...)
  2. OpenNews: Docker представил Moby и LinuxKit для построения произвольных систем контейнерной изоляции
  3. OpenNews: 11% актуальных образов в репозиториях Docker содержат опасные уязвимости
  4. OpenNews: Выпуск cистемы управления контейнерной виртуализацией Docker 1.13
  5. OpenNews: Docker 1.11 переведён на containerd и runC
  6. OpenNews: SUSE и openSUSE представили Kubic, платформу для развёртывания контейнерной инфраструктуры
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/46789-docker
Ключевые слова: docker
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (28) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 13:04, 30/06/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Они вроде в этом релизе планировали добавить цепочку DOCKER_USER в iptables. Добавили, нет, кто-нибудь в курсе?
     
     
  • 2.6, Справедливость (?), 16:25, 30/06/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Да, наконец-то завезли. Какое-то время сидел на test только из-за этого. :)
     

  • 1.2, Аноним (2), 13:29, 30/06/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда уже решат проблему при релоаде правил iptables и применения docker-правил в него?
     
  • 1.3, QuAzI (ok), 13:30, 30/06/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Когда оно уже устаканится и там перестанут ломать всё по диагонали?
     
     
  • 2.7, leap42 (ok), 17:14, 30/06/2017 [^] [^^] [^^^] [ответить]  
  • +9 +/
    когда модным будет что-нибудь другое
     
  • 2.10, Аноним (-), 21:22, 30/06/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тогда, когда наконец введут адекватный способ узнать id контейнера внутри этого себя самого не через cgroups. Там от версии к версии меняли пути в /proc, народу после обновлений приходилось всё чинить, судя по тому, что я видел на stackoverflow.
     
  • 2.11, ананас (?), 23:27, 30/06/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В этот раз поломали на отличьненько

    https://github.com/docker/machine/issues/4156
    https://github.com/docker/for-linux/issues/11#issuecomment-312143765
    https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/2562

     
     
  • 3.15, чкчн (?), 01:33, 01/07/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    чк, чн
     
  • 3.18, нах (?), 09:31, 01/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > В этот раз поломали на отличьненько

    жадный неплательщик бабок правильным пацанам - должен страдать (если присмотреться к патчу - поломали только в CE)
    if strings.Contains(v1, ceEdition) && !strings.Contains(v2, ceEdition) {
    break things and report unrelated trash instead directly showing what's wrong
    }

    зато на go. Тестами, очевидно, CE не покрыт вообще никак. Пипл схавает и так.


     

  • 1.4, Аноним (-), 13:43, 30/06/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >реализующего идею построения систем контейнерной изоляции в виде набора связываемых между собой универсальных компонентов.

    выглядит как превращение в глючного монстра

     
     
  • 2.5, Аноним (-), 15:15, 30/06/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Выглядит как неспособность автора новости выразить свою мысль.
     
  • 2.8, Dmitry Shurupov (ok), 18:07, 30/06/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чтобы не уходить в заблуждения про монстра… тут писал подробнее о том, что такое Moby и для чего его ввели, на русском языке: https://habrahabr.ru/company/flant/blog/329136/
     
  • 2.17, нах (?), 09:21, 01/07/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > выглядит как превращение в глючного монстра

    докер не может превратиться в то, чем изначально и был.

      

     

  • 1.9, Аноним (-), 21:19, 30/06/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уже пару недель используем "--build-arg", но жаль нет аналога, который будет работать только на пересобираемые строки Dockerfile. Изменение аргумента влечёт за собой полную пересборку всех слоёв, хотя в рамках задачи требуется пересобрать слои только согласно изменённым строкам.
     
  • 1.12, ALex_hha (ok), 01:06, 01/07/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > В команде "docker build" реализован флаг "--build-arg", позволяющий установить переменные для сборки, определённые в файле Dockerfile;

    не понял, о чем речь, эта опция есть и в 1.12

    # docker -v
    Docker version 1.12.6, build 78d1802

    # docker build --help | grep arg
          --build-arg value         Set build-time variables (default [])

    > Изменение аргумента влечёт за собой полную пересборку всех слоёв

    нет, не влечет ;)

    # docker build --build-arg ARG1=123 .
    Sending build context to Docker daemon 8.704 kB
    Step 1 : FROM alpine
    ---> 665ffb03bfae
    Step 2 : RUN echo "Add another layer"
    ---> Using cache
    ---> 0af0c3c6b816
    Step 3 : RUN echo "And another one"
    ---> Using cache
    ---> 1478a7423bc0
    Step 4 : COPY xvfb-run /tmp
    ---> Using cache
    ---> bc1be1f394c9
    Step 5 : ARG ARG1
    ---> Using cache
    ---> 6627f647b55c
    Step 6 : RUN echo "ARG1=${ARG1}"
    ---> Using cache
    ---> 622ecbd7b0dc
    Successfully built 622ecbd7b0dc

    Меняем параметр

    # docker build --build-arg ARG1=1234567 .
    Sending build context to Docker daemon 8.704 kB
    Step 1 : FROM alpine
    ---> 665ffb03bfae
    Step 2 : RUN echo "Add another layer"
    ---> Using cache
    ---> 0af0c3c6b816
    Step 3 : RUN echo "And another one"
    ---> Using cache
    ---> 1478a7423bc0
    Step 4 : COPY xvfb-run /tmp
    ---> Using cache
    ---> bc1be1f394c9
    Step 5 : ARG ARG1
    ---> Using cache
    ---> 6627f647b55c
    Step 6 : RUN echo "ARG1=${ARG1}"
    ---> Running in 6cefcfd1c15a
    ARG1=1234567
    ---> b076ab7b6bec
    Removing intermediate container 6cefcfd1c15a
    Successfully built b076ab7b6bec

    и о чудо, первые 4ре слоя не пересобирались

     
     
  • 2.20, Аноним (-), 14:32, 01/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Только что сам проверил, работает. Неожиданно. Недели полторы назад пересобирался целиком образ, что доставляло много неудобств. Не знаю, что поменялось, но это сильно облегчает жизнь. Спасибо за тест.
     
     
  • 3.22, ALex_hha (ok), 14:45, 01/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Только что сам проверил, работает. Неожиданно. Недели полторы назад пересобирался целиком
    > образ, что доставляло много неудобств. Не знаю, что поменялось, но это
    > сильно облегчает жизнь. Спасибо за тест.

    Я думаю вам понятно, что пересобираются все слои, которые идут за соотв   ARG параметром. Поэтому местоположение аргумента в докерфайле играет большое значение ;)

     
     
  • 4.23, Аноним (-), 15:43, 01/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В нашем случае большой роли не играет, это просто переменные окружения http{,s}_proxy, необходимые для установки пакетов на рабочем месте. Для остальных случаев используется динамически формируемое название контейнера (архитектура, дистрибутив, версия, ветка). Таким образом, кэш практически никогда не меняется, если только не добавляется новая зависимость.
     
     
  • 5.24, Аноним (-), 19:09, 01/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Поправка, предыдущий тест не достоверен, я забыл выключить прокси, поэтому ничего не пересобиралось. А из-за зависания ОС при выключении пришлось делать грубое выключение и потёрся пропал кэш и проверять долго... Потом перепроверю, но скорее всего я изначально был прав, пересобирается всё, т.к. аргумент интерпретируется как переменная окружения для всех команд. Видимо явное указание аргумента меняет схему. Попробуйте стереть строчку "ARG ARG1" ради интереса.
     

  • 1.13, ALex_hha (ok), 01:17, 01/07/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А почему в новости нет реально полезной фичи - Multi-stage builds? Которая позволяет в одном Dockerfile описать несколько контейнеров, а в финальном использовать только нужные папки/файлы из промежуточных

    FROM node:latest AS storefront
    WORKDIR /usr/src/atsea/app/react-app
    COPY react-app/package.json .
    RUN npm install
    COPY . /usr/src/atsea/app
    RUN npm run build

    FROM java:8-jdk-alpine
    WORKDIR /static
    COPY --from=storefront /usr/src/atsea/app/react-app/build/ .
    WORKDIR /app

    это очень круто и очень не хватало

     
     
  • 2.16, Dmitry Shurupov (ok), 05:09, 01/07/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В новости ведь написано об этом первым пунктом "других изменений":
    > Поддержка многоступенчатой сборки (multi-stage), позволяющей формировать более компактные образы Docker, используя единый Dockerfile.
     
  • 2.19, Аноним (-), 13:46, 01/07/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Почему именно такой чепухи не хватало? Ви таки нишмагли написать несколько докерфайлов? На мой взгляд, например, эта фича — зарабатывание на плошку риса строками кода.
     
     
  • 3.21, ALex_hha (ok), 14:42, 01/07/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вам платят за количество докерфайлов? :D И как вы будете передавать артефакты между контейнерами?
     

  • 1.14, ALex_hha (ok), 01:27, 01/07/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ну и в сабже не точность

    Вместо
    "В команде "docker build" реализован флаг "--build-arg", позволяющий установить переменные для сборки, определённые в файле Dockerfile;"

    Должно быть

    "В команде "docker build" реализована возможность использовать значение аргументов, передаваемых через опцию "--build-arg" в поле FROM"

    Т.е. теперь можно так

    ARG ALPINE_VERSION
    FROM alpine:${ALPINE_VERSION}
    ....

    $ docker build --build-arg ALPINE_VERSION=3.1 .
    Sending build context to Docker daemon  9.728kB
    Step 1/3 : ARG ALPINE_VERSION
    --->
    Step 2/3 : FROM alpine:${ALPINE_VERSION}
    3.1: Pulling from library/alpine
    5cd2c87bea1e: Pull complete
    Digest: sha256:d9477888b78e8c6392e0be8b2e73f8c67e2894ff9d4b8e467d1488fcceec21c8
    Status: Downloaded newer image for alpine:3.1
    ---> 00772ebf9244
    Step 3/3 : RUN echo "And another one"
    ---> Running in 27484f729759
    And another one
    ---> 3eaaac555507
    Removing intermediate container 27484f729759
    Successfully built 3eaaac555507

     
  • 1.25, Аноним (-), 11:08, 02/07/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    из присутствующих кто-либо делал инсталляции на 5000 контейнеров? какой режим сети выбирали?
     
     
  • 2.26, Аноним (-), 12:42, 02/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Да, выбрали режим поддержки докера группой программистов из 10 человек.
     
     
  • 3.27, Аноним (-), 17:25, 02/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    ты про сам докер, а у меня вопрос в основном по сетевой составляющей. из коробки все ставят оверлей сеть с натом. когда инсталляция разрастается и начинаются проблемы с производительностью все в панике начинают смотреть а чего там тормозит. при этом вменяемых средств трата и мониторинга этого оверлея нет. а с маквлан не все оркестры работают.
     
     
  • 4.28, leap42 (ok), 13:21, 03/07/2017 [^] [^^] [^^^] [ответить]  
  • +/
    а зачем вам нат?
    возьмите openvswitch, запилите несколько бриджей, разрулите всё там
    ovs приятный
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру