Оценок пока нет Основные команды Dockerfile

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

Команда FROM

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

FROM debian

Команда ADD

Чтобы переместить файл в каталог контейнера

ADD opa.txt /directory/

Отличие этой команды от команды COPY в том, что данная команда может автоматически разархивировать .tar, .gz

ADD /home/user/test.tar.gz /opt

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

ADD https://filesamples.com/samples/document/pdf/sample2.pdf /home/user

Команда CMD

Он определяет команду, которая будет выполняться при инициализации контейнера с этим образом. В Dockerfile может быть только одна инструкция CMD. Если вы добавите более одного, вступит в силу только последний

CMD ["sh, "-c", "echo", "$HOME"]

Его можно перезаписать при использовании, если мы передадим другую команду в командной строке, например

docker run -d my-image /bin/bash

Команда LABEL

Используйте его, чтобы установить описание контейнера и упростить управление всеми контейнерами

LABEL Description="Bla bla bla giropops"

Команда COPY

Аналогично ADD, но вы можете копировать обычные файлы и каталоги

COPY opa.txt /directory/

Команда ENTRYPOINT

Это как CMD, но его нельзя перезаписать, он всегда будет выполняться, контейнер будет работать как исполняемый файл.

Когда эта команда умирает, контейнер тоже умирает

ENTRYPOINT ["npm", "run", "dev"]

Команда ENV

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

ENV API_KEY="Igor Souto"

Команда EXPOSE

Устанавливает порты, которые контейнер будет предоставлять, чтобы контейнер был доступен через эти порты

EXPOSE 80

Команда RUN

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

Каждый RUN создает новый слой в нашем контейнере, поэтому нам нужно избегать создания слишком большого количества RUN, создавать меньше слоев и не допускать беспорядка, в конце концов, у нас есть доступ для чтения и записи только в последнем слое, поэтому в зависимости на то, что мы хотим сделать, мы не можем (например, apt-get clean в другом RUN).

Команда USER

Чтобы определить пользователя внутри контейнера, по умолчанию используется пользователь ROOT

USER igor

Команда WORKDIR

Определяет каталог работы. Когда контейнер запускается, это каталог, в который мы попадем, когда получим доступ к контейнеру

WORKDIR /mydir

Команда VOLUME

Создает том, каталог, который будет иметь копию на нашем компьютере/хост-докере.

Изменение чего-либо в этом объеме на нашей машине отразится на контейнере, и наоборот

VOLUME /mydir

Команда MAINTAINER

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

MAINTAINER Igor myemail@provider.com

Команда ARG

Инструкция ARG определяет переменную, которую пользователи могут передать во время сборки сборщику с помощью команды сборки docker, используя флаг --build-arg <имя_переменной>=<значение>. Данная переменная будет доступна только на этапе построения и внутри контейнера не доступна

ARG var

Команда ENV

Инструкция ENV устанавливает для переменной среды <key> значение <value>. Переменные среды, установленные с помощью ENV, будут сохраняться при запуске контейнера из полученного образа

ENV var=${var}

Комбинация ARG и ENV

То есть эти две команды можно комбинировать в Dockerfile, записав, как

ARG var
ENV var=${var}

Построение образа

Теперь для сборки образа мы используем команду сборки Docker. мы передаем -tпараметр, чтобы назвать это изображение, двоеточие и версию. И мы используем «.», чтобы сказать, что наш Dockerfile находится на том же уровне каталога. Мы указываем не на Dockerfile, а на каталог, в котором он находится

docker build -t first_image:1.0 .

Пожалуйста, оцените материал

WebSofter

Web - технологии