В этом кратком руководстве я кратко познакомлю вас с Dockerfile и научу использовать его для автоматизации процесса создания пользовательских образов Docker.
Dockerfile – это простой текстовый файл с инструкциями по созданию образа Docker.
Он содержит все команды, которые пользователь может вызвать в командной строке для создания образа.
Мы можем использовать dockerfile для создания наших собственных пользовательских изображений.
Затем мы можем поделиться этими пользовательскими образами Docker через Docker Hub.
Для тех, кто интересуется, Docker Hub – это служба репозиториев, предоставляемая Docker для поиска и обмена изображениями контейнеров с вашей командой и, конечно же, со всеми в мире.
Представьте себе этот сценарий.
Ранее, если мы хотим использовать Jenkins, нам нужно установить Jenkins с большим количеством шагов.
📜 Как создать свой первый пайплайн CI/CD в Jenkins?
Благодаря Dockerhub мы можем за пару минут загрузить и запустить готовый образ контейнера Jenkins.
# docker pull Jenkins
# docker run -it -d -p 8080:8080 jenkins
Понимание формата Dockerfile
Docker может создавать образ автоматически, читая инструкции из Dockerfile.
Типичный Dockerfile содержит следующие инструкции:
1. FROM установит базовый образ контейнера.
FROM ubuntu:18.04
LABEL ENV=”DEVELOPMENT”
RUN apt-get update RUN apt-get install tomcat
CMD [“java”, “-jar”, “app.jar”]
Мы можем получить доступ к выводу с использованием этого порта.
Пример:
EXPOSE 8080
Пример:
MAINTAINER devops@admin.in
Эти переменные устанавливаются во время сборки образа и доступны после создания контейнера.
Пример:
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, добавьте содержимое.
В следующем примере мы обновляем и устанавливаем vim и curl.
# cat dockerfile
FROM alpine RUN apk update RUN apk add vim RUN apk add curl
Собираем образ с помощью Dockerfile
Чтобы создать образ из Dockerfile, просто запустите:
# docker build -t devops .
Пожалуйста, обратите внимание на точку (.) в конце.
В соответствии с приведенной выше командой Docker автоматически начнет создавать образы, прочитав инструкции изDockerfile, сохраненного в текущем рабочем каталоге.
Если Dockerfile сохранен в другом месте, вы можете указать его путь, используя флаг -f, как показано ниже.
# docker build -f /path/to/a/Dockerfile .
# docker run -it devops