Рубрики
Uncategorized

Руководство для начинающих к Докере (Часть 1) — Команды DockerFile и Docker CLI

Что такое Docker? — «Построить один раз и никуда беги». Docker — это инструмент разработки программного обеспечения и … Теги с докером, дежопами, начинающими, WebDev.

Что такое Docker? — «Построить один раз и никуда беги».

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

Другими словами, приложения проходят так же, независимо от того, где они есть и какая машина они работают, потому что контейнер обеспечивает окружающую среду на протяжении всего жизненного цикла разработки программного обеспечения приложения. Поскольку контейнеры изолированы, они обеспечивают безопасность, что позволяет нескольким контейнерам работать одновременно на данном хосте. Кроме того, контейнеры легкие, потому что им не требуется дополнительная нагрузка гипервизора. Гипервизор — это гостевая операционная система, такая как VMware или VirtualBox, но вместо этого контейнеры работают непосредственно внутри ядра Host’s Machine.

Когда использовать Docker?

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

Основные случаи использования: Вытягивание изображений из Docker Hub также является хорошим решением, если ваше приложение является базовым или достаточно стандартным для работы с изображением докера по умолчанию. Такие случаи, как в разработке и размещении веб-сайта с использованием стека MERN, узел, официальные изображения MongoDB уже доступны на Dockerhub, и они хорошо поддерживаются. Если конфигурация по умолчанию в этих изображениях приемлема для ваших потребностей, то потянув изображение, может сэкономить много времени, которое в противном случае будет потрачено настроить настройку среды и установить необходимые инструменты.

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

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

Ограниченные системные ресурсы Экземпляры контейнерных приложений используют гораздо меньше памяти, чем виртуальные машины, они запускаются и быстро останавливаются быстрее, и их можно упаковать гораздо более плотно на своем хост-аппаратном обеспечении. Все это составляет менее расходы на это. Экономия затрат будет варьироваться в зависимости от того, какие приложения имеют в пьесе и насколько они могут быть ресурсоемкими, но контейнеры неизменно работают как более эффективные, чем VMS. Также можно сэкономить на расходах на лицензии на программное обеспечение, поскольку вам нужно много не менее эффективных экземпляров операционной системы для запуска одинаковых рабочих нагрузок.

Виртуальные машины VS Docker

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

С виртуальной машиной все работает внутри VM, не зависят от операционной системы хоста или гипервизора. Платформа Virtual Machine начинает процесс (называемый виртуальным монитором машины или VMM), чтобы управлять процессом виртуализации для конкретной виртуальной машины, а хост-система выделяет некоторые его аппаратные ресурсы для VM. Тем не менее, что принципиально отличается с виртуальной машиной, заключается в том, что во время начала он загружается новое, выделенное ядро для этой виртуальной среды VM и запускает (часто довольно большой) набор процессов операционной системы. Это делает размер VM намного больше, чем типичный контейнер, который содержит только приложение.

Напротив, со временем выполнения контейнера, как Docker, ваше приложение является песочницей внутри элементов изоляции, которые обеспечивает контейнер, но все равно допускает одно и то же ядро, что и другие контейнеры на одном хосте. В результате процессы, работающие внутри контейнеров, видны из хост-системы (достаточно приятных привилегий для перечисления всех процессов). Наличие нескольких контейнеров, которые разделяют одно и то же ядро, позволяют конечным пользователю лотовки для Bin-Pack и много контейнеров на той же машине с почти мгновенным время начала. Также, как следствие контейнеров, не требующих встраивания полной ОС, они очень легкие, обычно около 5-100 МБ.

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

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

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

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

Что такое документ докера?

Изображение — это Шаблон только для чтения шаблон с инструкциями по созданию контейнера докеров. Часто изображение основано на другом изображении с некоторой дополнительной настройкой. Например, вы можете построить изображение, которое основано на изображении Ubuntu, но устанавливает веб-сервер Apache и ваше приложение поверх него, а также данные конфигурации, необходимые для выполнения приложения.

Вы можете создавать свои собственные изображения, или вы можете использовать только созданные другими и публикуются в реестре. Чтобы создать свое собственное изображение, вы создаете Dockerfile С простым синтаксисом для определения шагов, необходимых для создания изображения и запустить его. Каждая инструкция в Dockerfile создает слой на изображении. Когда вы меняете DockerFile и восстановите изображение, только те слои, которые изменились, перестраиваются. Это часть того, что делает изображения настолько легкими, маленькими и быстрыми, по сравнению с другими технологиями виртуализации.

Что такое Docker Hub?

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

Написание простых докерфила

Предположим, у нас есть простое приложение Node JS, которое имеет файл Server.js, который слушает порту 3040 и печатает «Hello World!» на ударе ‘localhost: 3040/’

Структура файла следующим образом: SimplenoDeap

  • Dockerfile.
  • Package-lock.json.
  • Package.json.
  • server.js.
//Initializes a new build stage and sets the Base Image for subsequent instructions
FROM node:14-alpine

//Defining working directory for our application and 
it will be the default directory for our further steps
WORKDIR /app

//Copy package.json file to our created workdir
COPY package.json .

//Does npm install
RUN npm install

//Copy entire code from local to our workdir
COPY . .

//Exposing application on port 3040
EXPOSE 3040

//Command to run our application
CMD ["node", "server.js"]

Играть с вышеупомянутым докерфилом

Построить изображение => Docker Build -t MyApp: v1. Создайте контейнер и составьте его портируйте 3000 => Docker Run -P 3000: 3040 --Name MyContainer MyApp: V1 Список работает контейнеры => Docker PS Остановить контейнер => Docker STOP MYCONTAINER Чтобы снова начать контейнер => Докер начать MyContainer

Примечание: Мы могли бы задаться вопросом о разнице между Run and Cmd, Беги команда будет выполнена, пока мы создаем изображение, Тогда как . CMD Инструкция должна использоваться для запуска программного обеспечения, содержащегося на вашем изображении

Команды докера

Ниже приведены некоторые команды Docker CLI, которые мы используем ежедневно

Пусть imaged будет MyApp: v1 и ContureName Be Mycontainer.

Изображение Docker Build [Опции] Путь | URL |. - Docker Build -t MyApp: v1.

Эта команда помогает нам построить изображение приложения, используя письменные докерафила. Мы можем назвать изображение самостоятельно, чтобы сделать это использование -t Опция Docker Build -t Имя: тег.

Docker Tag Source_image [: Tag] target_image [: тег] Docker Tag MyApp: v1 mynewapp: v1

Это позволяет нам переименовать/тег уже созданное изображение без необходимости восстановления его.

Docker Images.

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

Docker Image Проверьте имя | ImageID Docker Image осматривает MyApp: V1.

Это дает подробную информацию о изображении в формате JSON по умолчанию.

Docker RMI [Опции] Изображение [Image ...] Docker RMI MyApp: V1

Эта команда позволяет нам удалить один или несколько изображений. Мы можем удалить изображение только в том случае, если он не используется каким-либо контейнером, включая остановленные контейнеры. Inforder Для удаления изображения нам нужно сначала удалить контейнер.

Docker System Prune [Опции]

Удалите все неиспользуемые контейнеры, сети, изображения (как висящие, так и безразрешенные), так и необязательно, тома.

Контейнеры Docker Run [Опции] Image [Command] [arg ...] Docker Run -P 3000: 3040 -IT -RM --Name MyContainer MyApp: V1

Эта команда сначала создает писанный слой контейнера по указанному изображению, а затем запускает его, используя указанную команду. По умолчанию эта команда работает в прикрепленном режиме. Каждый раз, когда вы запускаете эту команду, это создаст новый контейнер с указанным изображением. По умолчанию эта команда поиск изображения в локальном, если не найден, он также будет смотреть в репозитории. Для того, чтобы назвать наш контейнер, мы можем использовать --name Вариант, Docker Run - имя строки iname | ImageID Отказ Для запуска приложения с интерактивным режимом (чтение вход от консоли и т. Д…) Использование -Питать вариант. -ММ Опция скажет Docker, чтобы удалить контейнер, как только контейнер остановится.

Docker STOP [Опции] Контейнер [Контейнер ...] Докер остановился Mycontainer

Эта команда помогает нам остановить одну или несколько контейнеров.

Docker Start [Опции] Контейнер [Контейнер ...] Докер начать MyContainer

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

Docker Restart [Опции] Контейнер [Контейнер ...] Docker перезапустите MyContainer

Перезапустите одну или несколько контейнеров.

Docker Rename Container New_name Docker Rename MyContainer Mynewcontainer

Позволяет нам переименовать уже созданный контейнер.

Docker PS [Варианты]

Этот список всех контейнеров по умолчанию. Чтобы перечислить все контейнеры использовать - вариант.

Docker RM [Опции] Контейнер [Контейнер ...] Docker RM Mycontainer

Эта команда позволяет нам удалить одну или несколько контейнеров.

Docker Logs [Опции] Контейнер Docker Logs MyContainer.

Извлечь журналы контейнера.

Docker CP [Параметры] Контейнер: src_path dest_path | —

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

Docker Login [Опции] [Сервер] Докер Логин localhost: 8080

Войдите в реестр Docker.

Docker Lightout [Сервер] Docker Logout Localhost: 8080

Выйдите из реестра Docker.

Docker Push [Опции] Имя [: тег] Docker Image Push MyApp: v1

Используйте Docker Image Push, чтобы поделиться своими изображениями в реестр Docker Hub или на самообслуживание.

Docker Pull [Параметры] Имя [: Tag | @digest] Докер тянуть Ubuntu: 20.04

Docker Hub содержит множество предварительно построенных изображений, которые вы можете потянуть и попытаться без необходимости определять и настроить свой собственный. Эта команда позволяет нам загружать определенное изображение или набор изображений (то есть репозиторий)

Надеюсь, у вас есть хорошее понимание о основанных основаниях Docker, узнать о том, как управлять данными в Docker Checkout Part 2 Спасибо за чтение !!

Оригинал: «https://dev.to/paru429/beginner-s-guide-to-docker-and-docker-cli-commands-1p75»