🐳 Краткое введение в Dockerfile

by itisgood

В этом кратком руководстве я кратко познакомлю вас с Dockerfile и научу использовать его для автоматизации процесса создания пользовательских образов Docker.

Dockerfile – это простой текстовый файл с инструкциями по созданию образа Docker.

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

Мы можем использовать dockerfile для создания наших собственных пользовательских изображений.

Затем мы можем поделиться этими пользовательскими образами Docker через Docker Hub.

Для тех, кто интересуется, Docker Hub – это служба репозиториев, предоставляемая Docker для поиска и обмена изображениями контейнеров с вашей командой и, конечно же, со всеми в мире.

Представьте себе этот сценарий.

Ранее, если мы хотим использовать Jenkins, нам нужно установить Jenkins с большим количеством шагов.

📜 Как создать свой первый пайплайн CI/CD в Jenkins?

Благодаря Dockerhub мы можем за пару минут загрузить и запустить готовый образ контейнера Jenkins.

Чтобы вытащить образ Jenkins из DockerHub, запустите:
# docker pull Jenkins
После того, как мы извлекли образы Docker, мы можем использовать его, запустив образ с помощью команды:
# docker run -it -d -p 8080:8080 jenkins
В Dockerhub доступно более 100 000 образов контейнеров от поставщиков программного обеспечения, проектов с открытым исходным кодом и сообщества.
Вы можете искать и загружать любые образы контейнера по вашему выбору из Dockerhub и сразу же начать их использовать, как показано выше.

Понимание формата Dockerfile

Docker может создавать образ автоматически, читая инструкции из Dockerfile.

Типичный Dockerfile содержит следующие инструкции:

1. FROM  установит базовый образ контейнера.

FROM ubuntu:18.04
Он установит базовый образ контейнера как Ubuntu.
Если тег 18.04 не указан, он будет считаться тегом «latest».
2. LABEL – это пара ключ-значение, используемая для указания метаданных информации образа.
Пример:
LABEL ENV=”DEVELOPMENT”
3. RUN – используется для выполнения команды на базовом образе и создает новый слой.
Пример:
RUN apt-get update
RUN apt-get install tomcat
4. CMD – используется для задания команды, которая будет выполняться первой при запуске контейнера.
Пример:
CMD [“java”, “-jar”, “app.jar”]
5. EXPOSE –  откроет порт для доступа к контейнеру.
Контейнер будет прослушивать этот сетевой порт.

Мы можем получить доступ к выводу с использованием этого порта.

Пример:

EXPOSE 8080
6. MAINTAINER – предоставит подробную информацию об авторе, который создал этот образ Docker.

Пример:

MAINTAINER devops@admin.in
7. ENV – используется для установки переменных среды в паре ключ-значение.

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

Пример:

ENV DB_NAME=”MySQL”
ENV DB_VERSION=”8.0”

8. COPY – используется для копирования локальных файлов в контейнер.

Пример:

COPY /target/devops.jar devops.jar

9. ADD – Он работает так же, как COPY, но имеет некоторые дополнительные функции, такие например, что мы можем извлечь локальный tar и добавить удаленный URL

Пример:

ADD devops.tar.xz / .
ADD http://example.com/abc.git /usr/local/devops/

10. ENTRYPOINT – используется для установки основной команды для образа.

Он работает так же, как инструкция CMD.

единственная разница между CMD и ENTRYPOINT в том, что инструкции не перезаписываются в ENTRYPOINT.

Пример:

ENTRYPOINT [“java”, “-jar”, “app.jar”]

11. VOLUME – создает точку монтирования с указанным именем.

Пример:

VOLUME /app/devops

12. USER- устанавливает имя пользователя и группу пользователей при запуске образа.

Пример:

USER dhruv
USER admin

13. WORKDIR – установит рабочий каталог. Он создаст каталог, если его нет.

Пример:

WORKDIR /var/lib/

Вот пример Dockerfile:

FROM ubuntu:latest
MAINTAINER Dhruv Tiwari "dhruv.tiwari444@gmail.com"
RUN apt-get install -y software-properties-common python
RUN add-apt-repository ppa:chris-lea/node.js
RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ precise universe" >>
/etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nodejs
RUN mkdir /var/www
ADD app.js /var/www/app.js
CMD ["/usr/bin/node", "/var/www/app.js"]
Позвольте мне показать вам простой пример создания примера Dockerfile и построения образа.

Создание Dockerfile

Создайте файл с именем Dockerfile, добавьте содержимое.

В следующем примере мы обновляем и устанавливаем vim и curl.

# cat dockerfile
FROM alpine

RUN apk update
RUN apk add vim
RUN apk add curl
Теперь у нас есть Dockerfile.
Давайте продолжим и создадим образ, используя Dockerfile.

Собираем образ с помощью Dockerfile

Чтобы создать образ из Dockerfile, просто запустите:

# docker build -t devops .

Пожалуйста, обратите внимание на точку (.) в конце.

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

Если Dockerfile сохранен в другом месте, вы можете указать его путь, используя флаг -f, как показано ниже.

# docker build -f /path/to/a/Dockerfile .
После создания образа мы можем запустить его с помощью команды:
# docker run -it devops
Вот таким образом можно создавать пользовательские образы контейнеров, используя Dockerfile.
Мы рассмотрели только основы.
С Dockerfile можно сделать гораздо больше.
Я рекомендую вам обратиться к официальному справочнику по Dockerfile, чтобы узнать больше.

You may also like

Leave a Comment