Хотите запустить какое-то программное обеспечение на своем компьютере, но не хотите загружать все зависимости? Docker изменил способ разработки и развертывания программного обеспечения и позволяет запускать небольшие контейнеры практически на любой машине.

  • Запуск практически любого программного обеспечения с помощью очень небольшого количества команд и небольшого количества времени

Легко запускайте пару разных хранилищ данных (RabbitMQ, PostgreSQL, MySQL). Вы можете протестировать несколько баз данных без трудоемкого процесса установки и быстро начать работу, чтобы сосредоточиться на своих приложениях.

  • Не нужно создавать с нуля, что способствует переносимости

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

  • Общий доступ к конфигурации для всей команды с помощью Dockerfile

Зарегистрируйте файл Dockerfile или docker-compose.yml в своей кодовой базе, и команда сможет приступить к работе с помощью всего 1 команды. Это почти устраняет проблемы «Работает на моей машине», с которыми сталкиваются члены команды и с которыми приходится сталкиваться новым членам команды.

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

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

Терминология

Образ контейнера — пакет со всеми зависимостями и информацией, необходимой для создания контейнера (набор инструкций для запуска контейнера).

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

Том — доступный для записи слой поверх образа контейнера, поэтому программы имеют доступ к доступной для записи файловой системе. Вы будете иметь это для любой базы данных, которая не является базой данных в памяти.

Реестр образов — репозиторий, в котором хранятся образы Docker, которые вы или ваша команда можете развернуть в производственной среде или использовать для локальной разработки. DockerHub — широко известный общедоступный репозиторий образов Docker.

Тег (изображения) — метка, применяемая к изображениям, чтобы можно было идентифицировать разные образы или версии одного и того же образа (в зависимости от номера версии или целевой среды).

Полезные команды

docker compose up

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

docker run ubuntu:xenial

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

docker run -it ubuntu:xenial

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

docker run -d ubuntu:xenial

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

docker images

Получение списка локальных образов Docker

docker container ps

Список всех запущенных контейнеров

docker compose down -v

Завершите работу контейнеров Docker, указанных в docker-compose.yml, и удалите все тома (используйте это, чтобы удалить локальную базу данных).

docker kill ubuntu:xenial

Остановить один или несколько контейнеров

Заключение

Если вы еще не используете Docker, попробуйте преобразовать некоторые настройки в вашей локальной системе разработки для его использования, особенно для баз данных, хранилищ сообщений или очередей и внешних зависимостей. Если у вас есть команда, которую вы считаете особенно полезной с Docker, поделитесь ею в комментариях!

Если вам понравилась эта статья, подумайте о подписке на Medium!

Если вы или ваша компания заинтересованы в том, чтобы кто-то проводил технические собеседования, напишите мне в Твиттер (@Exosyphon) или посетите мой веб-сайт. Если вам нравятся подобные темы, вам также может понравиться мой YouTube-канал. Если вам нравятся 3D-печатные вещи, загляните в мой Магазин Etsy. Хорошего дня!