Русский
Русский
English
Статистика
Реклама

Question and answers

Каверзные вопросы по Python

18.11.2020 12:16:11 | Автор: admin

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



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


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


Первый пример


Очень короткий. Про операторы и порядок их вычислений.


11 > 0 is True

С ходу можно интерпретировать это выражение следующим образом:


  • Приоритет операторов сравнения и is одинаков.
  • 11 > 0 это True.
  • Упрощаем выражение, получая True is True.
  • Всё выражение в итоге станет True.

На самом же деле это выражение вернёт False.


Вот еще пара похожих выражений.


0 < 0 == 0             # False1 in range(2) == True  # False

Также обратите внимание, что расстановка скобок изменит результат.


(11 > 0) is True         # True(0 < 0) == 0             # True(1 in range(2)) == True  # True

Как всегда, никакой магии в этих примерах нет. Приведенные выражения это chained comparisons, которые следует читать так: a op1 b op2 c ... y opN z эквивалентно a op1 b and b op2 c and ... y opN z.


Итак, ответ: исходное выражение эквивалентно (11 > 0) and (0 is True), что, очевидно, является ложью.


Остался вопрос про скобки? Расстановка скобок превращает выражение в обычное, не chained comparisons. То есть благодаря скобкам приоритет смещается на выражение в них, оно вычисляется первым, а затем выполняется вторая операция.


Второй пример


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


a = 123b = 123a == ba is b

Двойное равно проверяет объекты на равенство (и очевидно, что 123 == 123). А оператор is проверяет, что переменные ссылаются на один и тот же объект. a и b разные объекты, поэтому a is b вернёт False.


На самом деле в Python есть оптимизация, касающаяся небольших int-ов (от -5 до 256 включительно). Эти объекты загружаются в память интерпретатора при его запуске. Получается небольшой кеш. Из-за этого объект получается один, и результат будет True.


Аналогичный пример для числа > 256 сработает ожидаемо:


a = 257b = 257a == b  # Truea is b  # False

Второй пример. Продолжение


Давайте попробуем копнуть глубже и посмотрим на следующий пример:


def test():    a = 257    b = 257    print(a is b)test()

257 не входит в кеш, и должно отобразиться False.


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


import disdis.dis(test)

Мы увидим следующие инструкции:


  2           0 LOAD_CONST               1 (257)              2 STORE_FAST               0 (a)  3           4 LOAD_CONST               1 (257)              6 STORE_FAST               1 (b)  4           8 LOAD_GLOBAL              0 (print)             10 LOAD_FAST                0 (a)             12 LOAD_FAST                1 (b)             14 COMPARE_OP               8 (is)             16 CALL_FUNCTION            1             18 POP_TOP             20 LOAD_CONST               0 (None)             22 RETURN_VALUE

Предпоследняя колонка это аргументы для операций. Для LOAD_CONST это индекс в массиве констант. Поскольку для обеих операций LOAD_CONST подаётся один и тот же индекс, в байткоде у нас лишь один объект, отвечающий за число 257.


Получается, что интерпретатор способен на подобные оптимизации: код предварительно анализируется, и некоторые константы переиспользуются (float-ы тоже, но не tuple-ы).
Итак, исходный код выведет True.


Третий пример


Этот вопрос однажды встретился мне на собеседовании. Он про классы и методы.


class C:    a = lambda self: self.b()    def __init__(self):        self.b = lambda self: Nonec = C()c.a()

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


Вспоминаем, что вызов метода применительно к экземпляру класса c.method() это то же самое, что вызов метода применительно к классу с первым аргументом в качестве экземпляра: C.method(c).


Теперь проверим, во что превратились параметры a и b класса C.


type(c.a)  # <class 'method'>type(c.b)  # <class 'function'>

Параметр а превратился в метод класса, такой же, как при определении метода внутри класса через def a(self).


А вот b это обычная функция, потому что она присваивается атрибуту экземпляра класса, а не определяется (как a) в момент создания класса.


Получается, что при вызове c.a() мы получаем C.a(c). Тут в качестве аргумента self в метод валидно передастся экземпляр класса. Далее внутри a вызывается функция b. Поскольку это обычная функция, то автоматической передачи экземпляра в качестве первого аргумента не произойдёт. И получается, что функция b вызовется без аргументов. Но она требует аргумент! Ведь она задана как lambda self: None. Не обращайте внимание, что аргумент называется self. Это сделано для дополнительного запутывания.


Итак, ответ:


Traceback (most recent call last):  File "<input>", line 1, in <module>  File "<input>", line 2, in <lambda>TypeError: <lambda>() missing 1 required positional argument: 'self'

Это происходит потому, что функции b не передан аргумент.


Четвёртый пример


Он про определение переменных в замыкании. Взят из списка хитрых вопросов с toptall:


def create_multipliers():    return [lambda x : i * x for i in range(5)]for multiplier in create_multipliers():    print(multiplier(2))

Кажется, ничего сложного. create_multipliers вернёт список из 5 функций (назовём их list_lamba_f). Каждая list_lamba_f будет умножать свой аргумент на свой индекс в результирующем массиве.


Получается, что на экране мы увидим:


02468

Дальнейший разбор предполагает, что вам знакомо замыкание (closure) при использовании вложенных функций (nested functions).


Свои коррективы в наивное объяснение выше вносит позднее связывание. Согласно ему, значение переменной из замыкания (это переменная i) вычисляется в тот момент, когда вызывается внутренняя функция (наши list_lamba_f).


Получается, что значение i в list_lamba_f вычисляется в момент вызова multiplier(2) в пятой строчке. Но в этот момент create_multipliers уже отработала целиком. и значение i это 4. То есть для всех list_lamba_f значение i равно 4.


Итак, ответ:


88888

Надеюсь, вам было интересно и понятно. С удовольствием почитаю комментарии с вопросами и задачами, которые кажутся вам полезными для понимания Python и просто занятными. Только не пишите ответ сразу!

Подробнее..

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

16.11.2020 16:04:47 | Автор: admin


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. Как много ответов вы знали? Просим принять участие в опросе ниже. Также рекомендуем вам ознакомиться с руководствами от сообщества


От редакции: Узнать подробно о работе с Docker и пройти практику можно с помощью видеокурса Слёрма.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru