company_banner

50 вопросов по Docker, которые задают на собеседованиях, и ответы на них

Original author: Sagar Bhatia
  • Translation


Docker, первый выпуск которого был еще в 2013 году, — весьма удобный инструмент для сборки пакетов, поставки и запуска приложений в «контейнерах». Большинство крупных компаний, например, Google, Amazon и VMware рассматривают Docker как зрелую технологию для контейнеров, поэтому сейчас самое время изучить этот инструмент и в результате продвинуться по карьерной лестнице. Хотите? В статье будут приведены вопросы по Docker, ответы на которые нужно знать, если вы идете на собеседование.


Что такое контейнер Docker?


Контейнер — базовая единица программного обеспечения, покрывающая код и все его зависимости для обеспечения запуска приложения прозрачно, быстро и надежно независимо от окружения. Контейнер Docker может быть создан с использованием образа Docker. Это исполняемый пакет программного обеспечения, содержащий все необходимое для запуска приложения, например, системные программы, библиотеки, код, среды исполнения и настройки.


Опишите составные части архитектуры Docker


Основные составные части архитектуры Docker — это:


  • сервер, содержит сервис Docker, образы и контейнеры. Сервис связывается с Registry, образы — метаданные приложений, запускаемых в контейнерах Docker.
  • клиент, применяется для запуска различных действий на сервере Docker.
  • registry, используется для хранения образов. Есть публичные, доступные каждому, например, Docker Hub и Docker Cloud.

Опишите Registry подробнее


Docker Registry служит для хранения образов Docker. Есть два публичных сервиса хранения: Docker Hub и Docker Cloud. Docker Hub — наиболее значимая публичная система хранения образов контейнеров, полностью поддерживаемая множеством разработчиков и другими участниками сообщества.


Расскажите кратко о жизненном цикле контейнера Docker


Жизненный цикл контейнера:


  • Создание контейнера
  • Работа контейнера
  • Приостановка контейнера
  • Возобновление работы контейнера
  • Запуск контейнера
  • Остановка контейнера
  • Перезапуск контейнера
  • Принудительная остановка контейнера
  • Удаление контейнера

Назовите наиболее важные команды Docker


Наиболее важные команды Docker:


  • build, сборка образа для Docker
  • create, создание нового контейнера
  • kill. принудительная остановка контейнера
  • dockerd, запуск сервиса Docker
  • commit, создание нового образа из изменений в контейнере

Что такое пространства имен в Docker?


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


Что такое Docker Swarm?


Docker Swarm (теперь это уже swarm mode, прим. переводчика) — встроенный инструмент Docker, используемый для организации кластеризации и планирования контейнеров. Разработчики и системные администраторы с его помощью могут легко собрать несколько узлов в единую виртуальную систему Docker и управлять ею.


Как определить состояние контейнера Docker?


Чтобы определить состояние, надо запустить команду:


docker ps -a

Эта команда выведет список всех доступных контейнеров с их состоянием на сервере. Из этого списка нужно выбрать требуемый контейнер и узнать его состояние.


Что такое образ Docker, что делает команда Docker run?


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


Опишите функции и случаи применения Docker


С помощью Docker можно:


  • Сделать процесс настройки проще и упростить настройку на уровне инфраструктуры;
  • Помочь разработчикам сосредоточиться исключительно на коде, сокращая время разработки и увеличивая продуктивность;
  • Усилить возможности отладки с использованием встроенных функций;
  • Изолировать приложения;
  • Улучшить плотность использования серверов в форме контейнеризации;
  • Делать быстрое развертывание на уровне операционной системы.

Что такое объекты Docker?


Под объектами понимают образы, сервисы и контейнеры.
Образы — шаблоны с инструкциями только для чтения для создания контейнеров.
Контейнеры — запущенные экземпляры образов.
Сервисы — можно запустить несколько контейнеров поверх нескольких сервисов Docker, работающих совместно как swarm.


Еще объектами можно назвать сети и тома.


Какой тип приложений больше подходит для контейнеров Docker: с хранением состояния (stateful) или без хранения (stateless)?


Приложения без хранения состояния (stateless) больше подходят для работы в Docker, чем приложения с хранением (stateful). Мы можем создать контейнер для нашего приложения и принять некоторые его настройки. Таким образом мы можем запускать один и тот же контейнер с разными настройками для различных окружений. Если мы не будем хранить состояние, сможем использовать один и тот же образ в разных сценариях. Также такие приложения проще масштабировать при их работе в контейнерах Docker.


Что такое Dockerfile?


Dockerfile содержит инструкции для сборки образов, которые передаются в Docker. Также его можно описать как текстовый документ, содержащий все возможные команды, с помощью которых пользователь, последовательно их запуская, может собрать образ.


Какие сети доступны по умолчанию в Docker?


По умолчанию есть:


  • bridge, сеть, к которой подключаются контейнеры, если не указано иначе.
  • none, сетевой стек без наличия сетевого интерфейса в контейнере.
  • host, подключение к сетевому стеку сервера.

Приведите необходимые шаги для развертывания докеризированного приложения, сохраненного в репозитории Git


Шаги, необходимые для развертывания приложения зависят от окружения, основной процесс развертывания будет таким:


  • Сборка приложения с использованием Docker build в каталоге с кодом приложения
  • Тестирование образа
  • Выгрузка образа в Registry
  • Уведомление удаленного сервера приложений, что он может скачать образ из Registry и запустить его
  • Перестановка порта в прокси HTTP(S)
  • Остановка старого контейнера

Чем Docker отличается от остальных технологий контейнеризации?


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


Посредством Docker все больше приложений могут работать на старых серверах, также с его помощью можно упаковывать и поставлять программы. Существует также DockerHub, Registry для контейнеров, откуда можно легко и просто скачать образы контейнеров для использования. Еще более интересная функция — общие контейнеры для таких приложений. Также Docker хорошо задокументирован, что делает его лучше остальных технологий контейнеризации.


Если вы остановите контейнер — потеряете данные?


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


Как выполняется мониторинг Docker в производственных окружениях?


Для мониторинга есть инструменты Docker stats и Docker events. С их помощью можно получить отчеты по важной статистике. Если запустить stats с некоторым идентификатором контейнера, он вернет использование оперативной памяти и процессорного времени в контейнере. Это схоже с использованием команды top. С другой стороны есть events, показывающая список активностей в процессе работы сервиса Docker. Вот некоторые из них: подключение к консоли контейнера, commit, переименование, удаление и т.п., а также есть возможность фильтрации нужных событий.


Расскажите о рабочем процессе использования Docker


Краткое пояснение рабочего процесса с использованием Docker:


  • Все начинается c Dockerfile, поскольку это исходный код образа.
  • Как только он создан, его можно использовать для сборки образа контейнера. Образ — собранная версия Dockerfile.
  • Образ можно распространять, используя Registry, работающий как репозиторий образов.
  • Далее образ используется для запуска контейнеров. Контейнер при работе весьма похож на виртуальную машину, но без гипервизора.

Поясните разницу между docker run и docker create


Главная разница между этими командами заключается в том, что вторая создаст контейнер в остановленном состоянии. Также docker create может быть использована для хранения и вывода идентификатора контейнера для будущего использования. Лучше всего это делать с помощью docker run, добавляя --cidfile FILENAME, поскольку повторный запуска не перезаписывает файл.


Что такое виртуализация?


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


Что же в сухом остатке? С помощью виртуализации можно запустить две различных операционных системы на одном и том же оборудовании. Первая операционная система используется для административных целей, все остальные гостевые — загружаются как обычно, включая инициализацию, загрузку ядра и т.д. Это также идеально для безопасности, поскольку гостевая ОС не может получить полного доступа к управляющей (host) ОС, что могло бы привести к дырам в безопасности.


Есть три типа виртуализации:


  • Паравиртуализация
  • Эмуляция
  • Контейнерная виртуализация

В чем разница между Registry и Repository?


Registry — это сервис хранения и распространения образов, также DockerHub — это Registry по умолчанию. Repository — это набор связанных образов. У них одно и то же имя, но разные метки.


Можно ли использовать JSON вместо YAML в файле для docker-compose, если да — как?


Да, так можно сделать. Для этого нужно явно указать имя файла, например так:


docker-compose -f docker-compose.json up

Расскажите о CMD и ENTRYPOINT в Dockerfile


Эти инструкции Dockerfile задают команду, исполняемую при запуске контейнера. При их использовании есть несколько правил, например:


  • Должна быть минимум одна из них, CMD или ENTRYPOINT, в Dockerfile.
  • Если контейнер используется как исполняемый файл — ENTRYPOINT должна быть определена.
  • Если контейнер запускается с другими аргументами — CMD будет переопределена.

Опишите процесс запуска приложения внутри контейнера Linux, используя Docker


  • Установите и запустите Docker;
  • Скачайте базовый образ с Docker Hub;
  • Загрузите ваше приложение в базовый образ;
  • Запустите контейнер в интерактивном режиме, используя полученный образ;
  • Проверьте контейнеры в системе;
  • Запустите или остановите контейнер;
  • Зайдите внутрь контейнера;
  • Удалите контейнер и образ.

Что такое гипервизор?


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


  • первого типа, легковесная операционная система, запускаемая на оборудовании;
  • второго типа, программное обеспечение, запускаемое из операционной системы.

Расскажите о ключевом различии между виртуализацией и контейнеризацией


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



Расскажите об образах Docker, DockerHub, Dockerfile


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


DockerHub: сервис для поиска и совместного использования образов контейнеров. Вы можете выгружать туда свои образы, скачивать их оттуда, работать с частными репозиториями образов контейнеров, собирать автоматически образы с помощью GitHub (Bitbucket), а затем закачивать их в DockerHub. Этот сервис предоставляет компания Docker.


Dockerfile: текстовый файл, используемый для сборки образа. Он содержит инструкции и команды по сборке образа. Docker читает их и автоматически собирает образ.


Как проверить версии Docker client и Docker server?


Версию Docker можно проверить с помощью docker version [параметры]. Если не указывать параметры, команда выдаст всю информацию, связанную с версией клиента и сервера. Чтобы получить только версию сервера, можно запустить такую команду:


docker version --format '{{.Server.Version}}'

Расскажите о процедуре входа в Docker Repository


Чтобы войти в Docker Repository, используется следующая команда:


docker login [OPTIONS] [SERVER]

Например, для входа в registry, размещенную на своих мощностях (локально), команда будет такой:


$ docker login localhost:8080

Расскажите о наиболее общих командах Docker


  • docker push: Закачать репозиторий или образ в Registry;
  • docker run: Запустить команду в новом контейнере;
  • docker pull: Скачать репозиторий или образ из Registry;
  • docker start: Запустить один или несколько контейнеров;
  • docker stop: Остановить один или несколько контейнеров;
  • docker search: Поиск образа на DockerHub;
  • docker commit: Сохранить изменения в новый образ.

Чем отличается контейнеризация в виде Docker от других технологий?


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


На каких платформах запускается Docker?


Docker работает на Windows (x86_64), Linux (x86_64, ARM, s390x, ppc64le).


Возможен ли самостоятельный перезапуск контейнера?


Да, возможен. Docker задает различные политики перезапуска контейнера:


  • Off: контейнер не перезапускается, если он остановился или аварийно завершил работу;
  • On-failure: перезапуск только в случае аварийной остановки, но не по команде пользователя;
  • Unless-stopped: перезапуск будет работать до тех пор, пока пользователь его не остановит;
  • Always: перезапуск в любом случае, независимо от ошибок или других проблем.

Политику можно задать так:


$ docker run -dit — restart [unless-stopped|off|on-failure|always] [CONTAINER]

Можно ли сравнить облака по возможностям контейнеризации с Docker?


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


Опишите все возможные состояния контейнера Docker


Created — контейнер создан, но не активен.
Restarting — контейнер в процессе перезапуска.
Running — контейнер работает.
Paused — контейнер приостановлен.
Exited — контейнер закончил свою работу.
Dead — контейнер, который сервис попытался остановить, но не смог.


Расскажите о средствах оркестрации и случаях их использования


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


  • Создание и развертывание контейнеров;
  • Балансировка нагрузки;
  • Разделение ресурсов между контейнерами;
  • Мониторинг контейнеров и серверов;
  • Масштабирование контейнеров;
  • Перенос контейнеров с одного сервера на другой, если на первом возникает недостаток ресурсов.

Опишите параметр memory-swap


С помощью параметра memory-swap можно разрешить контейнеру записывать на диск данные, превышающие размер оперативной памяти, выделенной контейнеру. Он работает, только если используется одновременно с параметром memory. Например, если memory = "400m" и memory-swap = "1g", то контейнер может использовать 400мб оперативной памяти и 600мб подкачки (1гб-400мб).


Где хранятся тома Docker?


Тома, создаваемые и управляемые Docker (у не-Docker процессов к ним нет доступа), хранятся в файловой системе сервера Docker по пути /var/lib/docker/volumes/. Тома — наиболее эффективный способ сохранения данных в Docker.


Назовите продвинутые команды Docker


Наиболее важные из них:


docker -version: узнать установленную версию Docker;
docker ps: перечислить все запущенные контейнеры вместе с дополнительной информацией о них;
docker ps -a: перечислить все контейнеры, включая остановленные, вместе с дополнительной информацией о них;
docker exec: войти в контейнер и выполнить в нем команду;
docker build: собрать образ из Dockerfile;
docker rm: удалить контейнер с указанным идентификатором;
docker rmi: удалить образ с указанным идентификатором;
docker info: получить расширенную информацию об установленном Docker, например, сколько запущено контейнеров, образов, версию ядра, доступную оперативную память и т.п.;
docker cp: сохранить файл из контейнера в локальную систему;
docker history: показать историю образа с указанным именем.


Расскажите о командах systemd для управления Docker


Для запуска Docker многие дистрибутивы Linux используют systemd. Для запуска сервисов используется команда systemctl. Если ее нет, следует использовать команду service.


$ sudo systemctl start docker
$ sudo service docker start

Чтобы добавить сервис в автозагрузку, либо убрать его:


$ sudo systemctl enable docker
$ sudo systemctl disable docker

Для проверки параметров запуска сервиса и их изменения:


$ sudo systemctl edit docker

Просмотра связанных с сервисом журналов:


$ journalctl -u docker

Опишите процесс масштабирования контейнеров Docker


Контейнеры могут быть масштабированы с использованием команды docker-compose scale. Процесс масштабирования такой:


  • Масштабируем контейнер и запускаем n экземпляров:

$ docker-compose --file docker-compose-run-srvr.yml scale <service_name>=<n>

В вышеприведенном примере имя сервиса задается в файле docker-compose-run-srvr.yml, а также запускается n копий контейнеров, где n — любое целое положительное число.


  • После масштабирования контейнера для проверки можно использовать такую команду:

$ docker ps -a

Что такое CNM?


CNM или Container Network Model — описание, формально определяющее шаги, требуемые для предоставления сети контейнерам, где обслуживающая абстракция применяется для поддержки нескольких сетевых драйверов. CNM основан на трех компонентах: sandbox (песочница), оконечная точка и сеть.


Какие типы монтирования доступны в Docker?


  • Bind mount: подключаются к любой точке файловой системы сервера;
  • Volume mount: управляются Docker и хранятся как часть файловой системы сервера;
  • tmpfs mount: хранятся в оперативной памяти сервера, поэтому никогда не пишутся на реальную файловую систему сервера.

Расскажите о Docker Trusted Registry


Это хранилище образов для безопасного хранения и управления образами Docker. Его можно установить на своих мощностях, либо в частном облаке. DTR применятся в процессах CI/CD для сборки, поставки и запуска приложений. Его также можно развернуть в отказоустойчивом варианте, есть встроенная система управления доступом.


Каково назначение docker_host?


Он задает URL или путь к сокету unix, используемые для соединения с API Docker. Значение по умолчанию — unix://var/run/docker.sock


Для подключения к удаленному серверу обычно используется TCP, например:
tcp://192.0.1.20:3230


Возможен ли запуск нескольких копий одного и того же compose файла на одном и том же сервере? Как именно?


Это можно сделать с помощью docker-compose, использующего файл YAML для настройки сервисов приложения. После его создания вы можете в одну команду создать и запустить все сервисы. Для того, чтобы начать им пользоваться:


  • Задайте окружение приложения в Dockerfile, так что оно сможет быть реплицировано везде
  • Определите все сервисы вашего приложения в файле docker-compose.yml
  • Запустите docker-compose up для создания и запуска приложения целиком

Объясните метки объектов в Docker


Метки объектов Docker — это пары ключ-значение, сохраняемые в виде строк. Мы можем применить метаданные с их помощью. Метки могут быть применены к любому объекту, например, образу, контейнеру, тому, сети, локальным сервисам, узлам swarm и непосредственно сервисам. Каждая пара должна быть уникальной для объекта, сами метки не меняются динамически на протяжении существования объекта.


Результаты


Это был список вопросов для собеседования по Docker. Как много ответов вы знали? Просим принять участие в опросе ниже. Также рекомендуем вам ознакомиться с руководствами от сообщества

Only registered users can participate in poll. Log in, please.

На сколько вопросов получилось ответить?

  • 36.5%Все или почти все!19
  • 38.5%Ну больше половины точно…20
  • 9.6%Меньше половины.5
  • 15.4%Почти ничего не смог ответить8
Southbridge
Обеспечиваем стабильную работу highload-проектов

Comments 18

    +3
    Если мы не будем хранить состояние, сможем использовать один и тот же образ в разных сценариях

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


    Можно ли использовать JSON вместо YAML в файле для docker-compose, если да — как?

    json — подмножество yaml...


    Опишите процесс масштабирования контейнеров Docker

    Правильный ответ… зависит от вашего оркестратора. А docker-compose в качестве оркестратора для хоть сколько большого прода — смешно.

      0
      А docker-compose в качестве оркестратора для хоть сколько большого прода — смешно.

      Почему нет? Если у меня три контейнера, два сервиса и один апач. Тоже не подойдёт? Масштабирования пока не планируется. Нужен ли мне на сервере Kybernetes.


      Я просто не специалист. Сейчас на сервере апач и томкат установлены прямо на сервере, хочу запаковать все в контейнеры. Проще обновлять. Ну и решил пока не заморачиваться слишком и использовать compose.

        0

        Именно для прода попробуйте ansible и конкретно его https://docs.ansible.com/ansible/2.5/modules/docker_container_module.html
        Это выглядит почти как docker-compose, работает стабильнее и имеет огромный запас дополнительных батареек (вроде готовой роли, чтобы поставить 1 строчкой docker на сервер). На простых кейсах вы берете чистый сервер, выполняете ansible-playbook site.yml и проект работает.

        0
        json — подмножество yaml...

        Возможно наоборот?
          +1
          Нет, yaml разрабатывался как надмножество json, то есть любой корректный json является корректным yaml. но не наоборот.
          YAML can therefore be viewed as a natural superset of JSON, offering improved human readability and a more complete information model. This is also the case in practice; every JSON file is also a valid YAML file. This makes it easy to migrate from JSON to YAML if/when the additional features are required.

          Хотя, в документации к yaml написано, что это не совсем так. Например,
          JSON's RFC4627 requires that mappings keys merely “SHOULD” be unique, while YAML insists they “MUST” be. Technically, YAML therefore complies with the JSON spec, choosing to treat duplicates as an error.

          Поэтому исходный вопрос не лишен смысла. Для ответа на него нужно посмотреть, как отреагирует docker-compose, если ему подсунуть
          {
            "version": "3.7",
            "services": {
              "node": {
                "image": "node:12-alpine",
                "image": "node:11-alpine"
              }
            }
          }
          
          который корректный как JSON и некорректный как YAML.
          Спойлер
          Запустит node:11-alpine. Даже если переименовать docker-compose.json в docker-compose.yaml.
          Видимо, авторам было не лень проверять, что отступы блоковых элементов должны обязательно быть пробелами, а не табуляцией, а на уникальность ключей, которая точно так же требуется форматом, все забили.
        0
        Еще пара вопросов:

        Можно ли исключить часть файлов из образа при его построении?
        Да, если определить файл .dockerignore. Его синтаксис аналогичен .gitignore.

        Чем отличаются команды COPY и ADD?
        ADD умеет скачивать файлы и распаковывать архивы. Но если эти фичи не нужны, предпочтительно использовать COPY.
          +4
          Поржал с картинки «виртуализация vs контейнеризация», как и над многими другими вещами, особенно из чего состоит докер…
            +1
            Я совсем не спец в теме, поэтому и зашел статью почитать для ликбеза, но когда дошёл до картинки этой, сразу спустился в комменты за ясностью, потому что то ли я запутался, то ли лыжи не едут.
            0
            «A container is the basic unit of software that holds the code and all its dependencies ...»
            Не обязательно контейнер должен содержать код программы.
            Скорее, скомпилированное приложение.
              +4
              а как же LXC контенйры?
                0
                А ведь ещё есть встроенные в systemd контейнеры, которые могут как докер — контейнером приложения, а могут и как контейнер с полноценным ОС окружением, включая систему инициализации.
                +2
                Виртуализация и контейнеризация — в иллюстрации названия наоборот, и не хватает «container engine» над Host OS
                  0
                  Картинку походу и не собираются исправлять…
                  +6
                  Возможен ли запуск нескольких копий одного и того же compose файла на одном и том же сервере? Как именно?
                  Это можно сделать с помощью docker-compose, использующего файл YAML для настройки сервисов приложения. После его создания вы можете в одну команду создать и запустить все сервисы.

                  Это не овечает на вопрос, да и вообще вопрос сформулирован некорректно. Запускаются не копии compose файлов, а связка контейнеров (docker-compose) или сервисов (docker stack) определенных в compose файле. Несколько запустить можно при задании разного COMPOSE_PROJECT_NAME (docker-compose) или имени стека (docker stack) и отсутствия конфликтов в публикуемых портах.
                    +1

                    Тут многоотносительно трешевых вопросов и сомнительных ответов, но больше всего позабавил этот:


                    Можно ли использовать JSON вместо YAML в файле для docker-compose, если да — как?

                    YAML это суперсет JSON :-)

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

                      Вызубрю наизусть. После этого ответа меня точно возьмут докер-девопсом!
                      (ирония)

                        +1
                        Главное, чтобы не девопс-докером!
                          0
                          YAML девелопером! ;-)

                        Only users with full accounts can post comments. Log in, please.