Dockerfile - это простой текстовый файл, содержащий все команды, которые пользователь может вызвать в командной строке для сборки или создания образа. С помощью сборки докеров вы можете легко автоматизировать сборку, которая последовательно запускает несколько команд, определенных в файле докеров.
Например, вы хотите загрузить образ докера из концентратора докеров для конкретных нужд разработки. Затем вы хотите обновить образ, установить несколько пакетов для процесса разработки. В этом случае вы можете создать файл докеров, включить все параметры для ваших конкретных нужд и создать свой собственный образ. После создания файла докеров вы можете использовать его снова и снова для создания одного и того же образа, не устанавливая вручную все необходимые пакеты для процесса разработки.
Dockerfile Basic
Перед работой с dockerfile важно знать, как сделать dockerfile. Dockerfile включает определенные ключевые слова, которые можно использовать для создания определенного образа. Краткое объяснение всех ключевых слов, используемых в файле докеров, приведено ниже:
- ИЗ: Он используется для определения базового изображения, на котором мы будем строить.
- ДОБАВЛЯТЬ: Используется для добавления файлов в строящийся контейнер. Проще говоря, RUN используется для запуска команд и фиксирует результат
- ЗАПУСТИТЬ: Используется для добавления слоев к базовому образу путем установки компонентов.
- CMD: Используется для запуска команд при запуске контейнера. Эти команды запускаются только в том случае, если при запуске контейнера не указан аргумент.
- ТОЧКА ВХОДА: Он используется для запуска команд во время процесса инициализации контейнера. Вы должны использовать ENTRYPOINT в своем док-файле, если хотите, чтобы контейнер запускался автоматически после создания образа.
- ENV: Он используется для определения переменных среды во время выполнения контейнера.
- РАЗОБЛАЧАТЬ: Используется для указания порта прослушивания для включения сети во время выполнения.
- ОБСЛУЖИВАНИЕ: Используется для указания имени и адреса электронной почты создателя изображения.
- ПОЛЬЗОВАТЕЛЬ: Используется для указания имени пользователя, используемого для запуска контейнера.
- ОБЪЕМ: Он используется для разрешения доступа из контейнера к каталогу на хосте Docker.
- WORKDIR: Используется для указания пути к команде, которая будет выполняться во время выполнения.
- МЕТКА: Используется для добавления меток к изображению докера.
Создание Dockerfile
В этом разделе мы создадим файл докеров для создания образа сервера LAMP из базового образа Ubuntu.
Во-первых, вам нужно будет создать каталог для хранения файла докеров. Вы можете создать его с помощью следующей команды:
mkdir ЛАМПАЗатем создайте каталог с именем Dockerfile внутри каталога:
нано-ЛАМПА / DockerfileДобавьте следующие строки:
ОТ ubuntu: последнийОБСЛУЖИВАНИЕ Хитеш Джетва
ENV DEBIAN_FRONTEND = не интерактивный
ЗАПУСТИТЬ apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl", "- D", "FOREGROUND"]
EXPOSE 8080
Сохраните и закройте файл, когда закончите.
Создание образа с помощью Dockerfile
После создания файла Dockerfile вы можете легко создать собственный образ LAMP с помощью файла Dockerfile.
Сначала измените каталог на LAMP и выполните следующую команду, чтобы создать образ из этого файла:
cd ЛАМПАdocker build -t "лампа: Dockerfile".
Приведенная выше команда начнет загрузку последнего образа Ubuntu из Docker Hub и установит необходимые пакеты, указанные в Dockerfile. После успешного построения образа вы должны увидеть следующий результат:
Отправка контекста сборки демону Docker 2.048кБШаг 1/6: ИЗ ubuntu: последний
последнее: извлечение из библиотеки / ubuntu
54ee1f796a1e: вытягивание завершено
f7bfea53ad12: Вытягивание завершено
46d371e02073: Вытягивание завершено
b66c17bbf772: Вытягивание завершено
Дайджест: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Статус: загружено более новое изображение для ubuntu: последнее
---> 4e2eef94cd6b
Шаг 2/6: ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ Hitesh Jethva
---> Работает в 047977af2c2a
Снятие промежуточного контейнера 047977af2c2a
---> 1331df625c4c
Шаг 3/6: ENV DEBIAN_FRONTEND = не интерактивный
---> Запуск в 3597152c7a1b
Снятие промежуточного контейнера 3597152c7a1b
---> 86c82c95e75d
Шаг 4/6: ЗАПУСТИТЕ apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Снятие промежуточного контейнера 322532299fd9
---> f6897a9554f7
Шаг 5/6: CMD ["apachectl", "- D", "FOREGROUND"]
---> Запуск в 669635bc8bcb
Снятие промежуточного контейнера 669635bc8bcb
---> e8400eb2e677
Шаг 6/6: ЭКСПОЗИЦИЯ 8080
---> Запуск в 937ae2b2d305
Снятие промежуточного контейнера 937ae2b2d305
---> 2123a857361d
Успешно построен 2123a857361d
Лампа успешно помечена тегом: Dockerfile
Теперь вы можете добавить свой недавно созданный образ в список, выполнив следующую команду:
образы докеровВы должны увидеть следующий результат:
РЕПОЗИТОРНЫЙ ТЕГ ИДЕНТИФИКАТОР ИЗОБРАЖЕНИЯ СОЗДАННЫЙ РАЗМЕРlamp Dockerfile 2123a857361d 44 секунды назад 520MB
ubuntu последнее 4e2eef94cd6b 8 дней назад 73.9 МБ
Теперь у вас в руках собственный образ сервера LAMP. Вы также можете просмотреть историю каждой команды с помощью следующей команды:
лампа истории докеров: DockerfileВы должны увидеть следующий результат:
ИЗОБРАЖЕНИЕ СОЗДАНО ПО РАЗМЕРУ КОММЕНТАРИЙ2123a857361d 16 минут назад / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 16 минут назад / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 16 минут назад / bin / sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d 17 минут назад / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin… 0B
1331df625c4c 17 минут назад / bin / sh -c # (nop) MAINTAINER Hitesh Jethva 0B
4e2eef94cd6b 8 дней назад / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B
Создание контейнера из образа LAMP
Теперь вы можете запустить контейнер из вашего образа, используя следующую команду:
docker run -dit lamp: DockerfileПосле запуска контейнера вы должны увидеть следующий вывод:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Вы можете проверить работающий контейнер, используя следующую команду:
докер psВы должны получить следующий результат:
КОНТЕЙНЕР ИДЕНТИФИКАЦИЯ ИЗОБРАЖЕНИЕ КОМАНДА СОЗДАЕТ СОСТОЯНИЕ НАЗВАНИЯ ПОРТОВc14794784eb2 lamp: Dockerfile "apachectl -D FOREGR…" 2 минуты назад Вверх на 2 минуты 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan
Заключение
В этом руководстве вы узнали, что такое Dockerfile и как создать образ докера с помощью Dockerfile. Это очень полезно для создания ваших пользовательских изображений вместо фиксации изменений в извлеченном изображении.