Building Your Swarm Tech Stack for the Docker Container Platform
Оглавление:
Образ Docker - это план контейнеров Docker, который содержит приложение и все, что вам нужно для запуска приложения. Контейнер - это экземпляр образа во время выполнения.
В этом руководстве мы объясним, что такое Dockerfile, как его создать и как создать образ Docker с помощью Dockerfile.
Что такое Dockerfile
Dockerfile - это текстовый файл, который содержит все команды, которые пользователь может выполнить в командной строке для создания образа. Он включает в себя все инструкции, необходимые Docker для создания образа.
Образы Docker состоят из серии слоев файловой системы, представляющих инструкции в Dockerfile образа, который составляет исполняемое программное приложение.
Файл Docker имеет следующую форму:
# Comment INSTRUCTION arguments
INSTRUCTION
не чувствительна к регистру, но соглашение состоит в том, чтобы использовать UPPERCASE для своих имен.
Ниже приведен список с кратким описанием некоторых наиболее часто используемых инструкций Dockerfile:
- ARG - эта инструкция позволяет вам определять переменные, которые могут быть переданы во время сборки. Вы также можете установить значение по умолчанию. FROM - базовое изображение для создания нового изображения. Эта инструкция должна быть первой инструкцией без комментариев в Dockerfile. Единственное исключение из этого правила - когда вы хотите использовать переменную в аргументе
FROM
. В этом случаеFROM
может предшествовать одна или несколько инструкцийARG
. ЭТИКЕТКА - Используется для добавления метаданных к изображению, таких как описание, версия, автор.. и т. Д. Вы можете указать более одногоLABEL
, и каждая инструкцияLABEL
является парой ключ-значение. RUN - команды, указанные в этой инструкции, будут выполняться в процессе сборки. Каждая инструкцияRUN
создает новый слой поверх текущего изображения. ДОБАВИТЬ - Используется для копирования файлов и каталогов из указанного источника в указанное место назначения на образе докера. Источником могут быть локальные файлы или каталоги или URL. Если источником является локальный tar-архив, он автоматически распаковывается в образ Docker. COPY - аналогичноADD
но источником может быть только локальный файл или каталог. ENV - эта инструкция позволяет вам определять переменную окружения. CMD - используется для указания команды, которая будет выполняться при запуске контейнера. Вы можете использовать только одну инструкциюCMD
в вашем Dockerfile. ENTRYPOINT - ПодобноCMD
, эта инструкция определяет, какая команда будет выполняться при запуске контейнера. WORKDIR - эта директива устанавливает текущий рабочий каталог дляENTRYPOINT
RUN
,CMD
,ENTRYPOINT
,COPY
иADD
. ПОЛЬЗОВАТЕЛЬ - установите имя пользователя илиUID
для использования при выполнении любых следующих инструкцийRUN
,CMD
,ENTRYPOINT
,COPY
иADD
. ОБЪЕМ - Позволяет вам подключить каталог хост-машины к контейнеру. EXPOSE - используется для указания порта, который слушает контейнер во время выполнения.
Чтобы исключить добавление файлов и каталогов в изображение, создайте файл
.dockerignore
в контекстном каталоге. Синтаксис
.dockerignore
аналогичен
.gitignore
файла Git
.gitignore
.
Для полной ссылки и подробного объяснения инструкций по Dockerfile смотрите официальную страницу ссылок Dockerfile.
Создать Dockerfile
Наиболее распространенный сценарий при создании образов Docker - извлечь существующий образ из реестра (обычно из Docker Hub) и указать изменения, которые вы хотите внести в базовый образ. Наиболее часто используемый базовый образ при создании образов Docker - это Alpine, потому что он небольшой и оптимизирован для работы в оперативной памяти.
В этом примере мы создадим образ Docker для сервера Redis. Мы будем использовать последнюю версию Ubuntu 18.04 в качестве базового образа.
Сначала создайте каталог, который будет содержать Dockerfile и все необходимые файлы:
mkdir ~/redis_docker
Перейдите в каталог и создайте следующий Dockerfile:
cd ~/redis_docker
nano Dockerfile
Dockerfile
FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y redis-server && \ apt-get clean EXPOSE 6379 CMD
Давайте объясним значение каждой из строк в Dockerfile:
- В строке
1
мы определяем базовый образ. ИнструкцияRUN
которая начинается в строке3
, обновит индекс apt, установит пакет «redis-server» и очистит кэш apt. Команды, используемые в инструкциях, аналогичны командам, которые вы использовали бы для установки redis на сервере Ubuntu. ИнструкцияEXPOSE
определяет порт, на котором слушает сервер redis. В последней строке мы используем инструкциюCMD
для установки команды по умолчанию это будет выполнено, когда контейнер запустится.
Сохраните файл и закройте редактор.
Построение имиджа
Следующим шагом является создание изображения. Для этого выполните следующую команду из каталога, в котором находится Dockerfile:
docker build -t linuxize/redis.
Опция
-t
задает имя изображения и, опционально, имя пользователя и тег в формате 'username / imagename: tag'.
Вывод процесса сборки будет выглядеть примерно так:
Sending build context to Docker daemon 3.584kB Step 1/4: FROM ubuntu:18.04 ---> 7698f282e524 Step 2/4: RUN apt-get update && apt-get install -y gosu redis-server && apt-get clean ---> Running in e80d4dd69263… Removing intermediate container e80d4dd69263 ---> e19fb7653fca Step 3/4: EXPOSE 6379 ---> Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc ---> 13b92565c201 Step 4/4: CMD ---> Running in a67ec50c7048 Removing intermediate container a67ec50c7048 ---> d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest
Когда процесс сборки будет завершен, новый образ будет указан в списке изображений:
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MB
Запуск контейнера
Теперь, когда изображение создано, вы запускаете контейнер из него, выполнив:
docker run -d -p 6379:6379 --name redis linuxize/redis
Опции
-d
сообщают Docker о запуске контейнера в отдельном режиме, опция
-p 6379:6379
опубликует порт 6379 на хост-машине, а опция
--name redis
указывает имя контейнера. Последний аргумент
linuxize/redis
- это имя изображения, которое используется для запуска контейнера.
Когда контейнер запустится, используйте следующую команду для просмотра списка всех запущенных контейнеров:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 "redis-server '--pro…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp redis
Чтобы убедиться, что все работает, как следует, используйте
redis-cli
для подключения к контейнеру
redis-cli
:
redis-cli ping
Сервер redis должен ответить
PONG
.
Вывод
В этом руководстве рассматриваются только основы использования Dockerfiles для создания образов. Чтобы узнать больше о том, как писать Dockerfiles и рекомендуемые лучшие практики, см. Лучшие практики для написания Dockerfiles.
WinCDEmu легко и легко монтирует образы дисков
Этот эмулятор CD / DVD работает с полной прозрачностью, ничего не стоит и должен -загрузка для тех, кто регулярно монтирует изображения.
Как создавать пользовательские функции Excel с помощью VBA
Вы можете создавать пользовательские функции Excel, соответствующие вашим критериям. Создавайте пользовательские функции excel с помощью макросов в Excel и используйте определенные пользователем функции в Excel.
Как удалить Docker-контейнеры, образы, тома и сети
Это руководство служит шпаргалкой, помогающей пользователям Docker сохранять свою систему организованной и освобождать дисковое пространство, удаляя неиспользуемые контейнеры Docker, образы, тома и сети.