Рубрики
Uncategorized

Основы DockerFile для создания пользовательского контейнера

Что такое dockerfile? Как уже упоминалось в предыдущей статье этой серии, изображение Docker является Bluep … Теги с докером, дежоптом.

Что такое dockerfile?

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

Позволяет использовать абстрактный пример — скажем, вы хотите создать образечку Docker для вашей любимой базы данных с помощью DockerFile ( ПРИМЕЧАНИЕ: на Dockerhub для большинства баз данных ). Вы, вероятно, захотите использовать операционную систему, такую как Ubuntu. Вместо того, чтобы записать свой DockerFile, чтобы включить все команды для полной установки и настройки Ubuntu, вы можете просто использовать изображение Ubuntu, которое делает все это для вас. Мы будем использовать это Ubuntu Docker Image как «база» для нашего нового изображения. В вашем DockerFile вам нужно только включить команды Linux, которые будут установлены и запустить вашу базу данных в системе.

Создание и создание пользовательского изображения с помощью DockerFile

Как уже упоминалось ранее, создавать наши собственные изображения, мы захочем создать и написать наш собственный DockerFile. Чтобы создать один, просто генерируйте новый файл с именем «Dockerfile» (расширение не требуется).

touch Dockerfile

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

Использование базового изображения

Для этого я собираюсь использовать официальный образ Ubuntu в качестве основы для моего докерафила, потому что я хочу настроить сервер приложений на основе Linux. Убедитесь, что ваше определение базового изображения объявлено в верхней части вашего DockerFile, используя из инструкции.

FROM ubuntu:18.04

Выполнение команды в контейнере

Теперь мы будем смотреть на выполнение команды Linux, используя DockerFile. Команды, которые вы хотите выполнить в контейнере, в процессе сборки предшествуют инструкции по запуску в DockerFile. Инструкция CMD такая же, как инструкция запуска, за исключением того, что она используется для выполнения команд после завершения процесса сборки. Обычно это то, что вы хотите сделать, чтобы начать работу или программное обеспечение, которое вы хотите работать, пока контейнер активен I.e. Запуск вашего сервера приложений, чтобы он мог обработать запросы. Давайте продлим наш докерный файл следующим образом:

FROM ubuntu:18.04
RUN echo 'Hello World'
CMD echo 'Hello World'

Строительство и управление контейнером

Теперь мы также можем построить наш контейнер Docker, используя Docker Build -t My-Image. . После ввода команды вы должны увидеть наш образ Ubuntu, вытянутый из DockerHub (если он уже не на вашем компьютере) и обратите внимание, как все наши инструкции перечислены в терминале. Флаг «-T» используется для того, чтобы дать наше изображение имя (в этом случае, я даю ему имя «My-Image»). Чтобы проверить, что он построен правильно, мы хотим перечислить все изображения на нашей машине, используя команду Docker Images Отказ Чтобы запустить наш контейнер с новым изображением, используйте Docker запустить мое изображение Теперь вы должны получить что-то напечатано в вашу командную строку: «Hello World». Но держись — не вывели это дважды? ПОМНИТЕ: Команды команд RUN выполняются в состоянии сборки, поэтому они не выводятся на консоль. Это также поэтому мы используем инструкции по запуску до CMD в нашем DockerFile.

Копирование файлов в контейнер

Наиболее распространенной причиной создать свое собственное изображение с помощью DockerFile, заключается в том, что вам необходимо использовать некоторый свой собственный код или двоичные файлы для приложения. Docker имеет две инструкции, которые можно использовать для этого, добавить и скопировать. Разница между ними действительно минимальна. Добавить способность принимать дополнительные параметры, которые позволяют извлечь файлы, когда вы копируете их из локального каталога (из файла TAR или ZIP), в то время как копия не делает. По этой причине это конвенция использовать копию всякий раз, когда все, что вы делаете, — это копирование файлов в ваш контейнер. Я решил создать действительно простой текстовый файл, который я хочу скопировать, а затем вывести содержимое каталога в свой контейнер. Мой каталог в настоящее время выглядит так:

Отказ ├── DockerFile └── helloworld.txt

Инструкция копирования требует двух параметров. Первый — путь файла к файлу, который вы хотите скопировать, другой — это каталог, который вы хотите скопировать файл.

FROM ubuntu:18.04
COPY ./helloworld.txt .
CMD ls

Нам нужно восстановить наше изображение и запустить его, с тем же командами, которые мы использовали ранее. Вот выход:

bin boot dev etc helloworld.txt Home Lib64 Media Mnt Opt Proc rot roun roun sbin sbin sys tmp usr var

Теперь мы видим, что помимо нашего helloworld.txt, мы получаем содержимое папки root Linux, перечисленное в консоли. Это означает, что он работал! Прямо сейчас, кажется, что рабочий каталог по умолчанию для нашего контейнера (или более конкретно, Ubuntu: 18.04 Docker Image) — это папка root Linux!

Изменение рабочего каталога Docker

Изменение рабочего каталога Docker так же просто, как и используя инструкцию Workdir.

FROM ubuntu:18.04
WORKDIR /usr/
COPY ./helloworld.txt .
CMD ls

Теперь я получаю следующий вывод:

Bin Games helloworld.txt включают lib local sbin share src

Закрытие слов

Я надеюсь, что вам понравилось это введение в DockerFiles! Есть еще многое другое, но я считаю их строительными блоками создания любого контейнера, который вы хотите. Существует несколько ключевых функций докера и соответствующие инструкции, которые я не упоминал здесь, специально выставляя и объем. Причина этого состоит в том, что они обычно определяются с использованием параметров из командной строки, которую я покрыл в моем предыдущем уроке Docker. Для дальнейшего изучения и практического примера при использовании DockerFile для настройки веб-сервера Nginx я рекомендую следующее чуть больше Расширенный учебник Отказ

Оригинал: «https://dev.to/marcbeaujean/dockerfile-step-by-step-creating-a-custom-container-2ccm»