[Проектирование и разработка контейнерных приложений] 2.2 Написание Dockerfile и лучшие практики

2.2 Написание и лучшие практики Dockerfile

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

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

вставьте сюда описание изображения

2.2.1 Какие инструкции содержит Dockerfile

  1. Укажите базовый образ . В первой строке Dockerfile используйте FROMдирективу чтобы указать, на каком существующем образе основан образ.
FROM openjdk:8-jdk-alpine
复制代码
  1. Скопируйте файлы приложения : используйте команду COPY или ADD, чтобы скопировать файлы приложения с хост-компьютера внутрь контейнера.
COPY target/*.jar   /app.jar
复制代码

3. Команда «Выполнить» : используйте команду «Выполнить» для выполнения команд оболочки или других исполняемых файлов.

RUN apt-get update && \
		apt-get install -y curl && \
		rm -rf /var/lib/apt/lists/*
复制代码
  1. Предоставить порты : используйте EXPOSEинструкции, чтобы сообщить Docker, какие порты будет прослушивать контейнер.
EXPOSE 8080
复制代码
  1. Определите точку монтирования : используйте VOLUMEкоманду, чтобы определить каталог для монтирования.
VOLUME /data
复制代码
  1. Установка переменных среды : используйте ENVдирективы для установки переменных среды.
ENV app_name=myapp
复制代码
  1. Выполнение команд : используйте ENTRYPOINTдирективы для определения команд, которые будут выполняться при запуске контейнера Docker.
ENTRYPOINT ["java","-jar","/app.jar"]
复制代码

2.2.2 Примечания к Dockerfile

При написании Dockerfile необходимо следовать следующим рекомендациям:

  1. Используйте лаконичный синтаксис и сократите количество ненужных комментариев.
  2. Устанавливайте только необходимые зависимости, а не всю библиотеку.
  3. Установите зависимые библиотеки в определенный каталог в контейнере, а не в глобальный каталог в контейнере.
  4. Копируйте только необходимые файлы, а не целые каталоги.
  5. Установите переменные среды для запуска команд в контейнере.
  6. Используйте двоичные файлы, а не исходный код, если не требуется компиляция.

Какие проблемы решают Dockerfiles?

1. Единые стандарты

  • сборка приложения
    • Ява, С++, JavaScript
    • упаковка
    • .Exe
    • сборка докера.... зеркалирование
  • обмен приложениями
    • Все образы программного обеспечения размещаются в специально отведенном месте docker hub.
    • андроид, рынок приложений
  • приложение работает
    • Единое зеркальное отображение
    • докер запустить

2. Изоляция ресурсов

  • Изоляция и ограничение ресурсов процессора, памяти
  • Изоляция и ограничение доступа к устройствам
  • Сетевая изоляция и ограничения
  • Ограничения изоляции пользователей и групп пользователей
  • ......

4. Архитектура

  • Докер_хост:
    • Хост, на котором установлен Docker
  • Докер-демон:
    • Фоновый процесс Docker, работающий на хосте Docker
  • Клиент:
    • Клиенты для работы с хостами Docker (командная строка, пользовательский интерфейс и т. д.)
  • Реестр:
    • зеркальный склад
    • Докер Хаб
  • Изображений:
    • Зеркалирование, упакованные программы с окружением, можно запускать и запускать напрямую
  • Контейнеры:
    • Контейнер, работающая программа, запускаемая образом

Supongo que te gusta

Origin juejin.im/post/7229178458071760953
Recomendado
Clasificación