Dockerfile - це простий текстовий файл, який містить усі команди, які користувач може викликати в командному рядку для складання або побудови образу. За допомогою збірки docker ви можете легко автоматизувати збірку, яка виконує декілька команд, визначених у файлі docker, послідовно.
Наприклад, ви хочете завантажити образ докера з центру докера для своїх конкретних потреб у розробці. Потім ви хочете оновити образ, встановити деякі пакети для вашого процесу розробки. У цьому випадку ви можете створити файл docker, включити всі параметри для своїх конкретних потреб та створити власний образ. Після створення докер-файлу ви можете використовувати його знову і знову для створення одного і того ж образу, не встановлюючи вручну всі необхідні пакети для вашого процесу розробки.
Dockerfile Basic
Перш ніж працювати з dockerfile, якщо важливо знати, як створити dockerfile. Файл Docker містить конкретні ключові слова, за якими можна створити певний образ. Коротке пояснення всіх ключових слів, що використовуються у файлі docker, наведено нижче:
- ВІД: Використовується для визначення базового зображення, на якому ми будуватимемо.
- ДОДАТИ: Використовується для додавання файлів у контейнер, що будується. Простіше кажучи, RUN використовується для запуску команд і фіксує результат
- БІГ: Використовується для додавання шарів до базового зображення шляхом встановлення компонентів.
- CMD: Використовується для запуску команд на початку контейнера. Ці команди виконуються лише тоді, коли під час запуску контейнера не вказано аргумент.
- ТОЧКА ВХОДУ: Використовується для запуску команд під час процесу ініціалізації контейнера. Ви повинні використовувати ENTRYPOINT у своєму док-файлі, якщо хочете автоматично запустити контейнер після побудови зображення.
- ENV: Використовується для визначення змінних середовища під час роботи контейнера.
- ЕКСПОЗИЦІЯ: Використовується для визначення порту прослуховування для включення мережі під час роботи.
- ТЕХНІЧНИЙ: Використовується для вказівки імені та ідентифікатора електронної пошти творця зображення.
- КОРИСТУВАЧ: Використовується для вказівки імені користувача, що використовується для запуску контейнера.
- ОБ'ЄМ: Використовується для надання доступу з контейнера до каталогу на хості Docker.
- WORKDIR: Використовується для вказівки шляху до команди, що виконується під час виконання.
- ЕТИКЕТКА: Використовується для додавання міток до зображення докера.
Створення файлу Docker
У цьому розділі ми створимо файл docker для створення образу сервера LAMP із базового образу Ubuntu.
По-перше, вам потрібно буде створити каталог для зберігання докер-файлу. Ви можете створити його за допомогою такої команди:
mkdir LAMPДалі створіть каталог з іменем Dockerfile всередині каталогу:
nano LAMP / DockerfileДодайте такі рядки:
ІЗ ubuntu: останняТЕХНІЧНИЙ ХІТЕШ ДЖЕТВА
ENV DEBIAN_FRONTEND = неінтерактивний
ЗАПУСКАТИ apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-загальний php-mysql php-json php-curl -y
CMD ["apachectl", "- D", "FOREGROUND"]
ЕКСПОЗИЦІЯ 8080
Збережіть і закрийте файл, коли закінчите.
Створення зображення за допомогою Dockerfile
Після створення Dockerfile ви можете легко створити власний образ LAMP за допомогою Dockerfile.
Спочатку змініть каталог на LAMP і запустіть таку команду, щоб побудувати зображення з цього файлу:
CD LAMPdocker build -t "лампа: файл Docker".
Вищевказана команда розпочне завантаження останнього образу Ubuntu з Docker Hub та встановить необхідні пакети, зазначені в Dockerfile. Після успішного створення зображення ви побачите такий результат:
Надсилання контексту побудови до демона Docker 2.048кБКрок 1/6: ІЗ ubuntu: остання
остання: Витягування з бібліотеки / ubuntu
54ee1f796a1e: Потягніть завершено
f7bfea53ad12: Потягніть завершено
46d371e02073: Витягніть завершено
b66c17bbf772: Потягніть завершено
Дайджест: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Статус: Завантажено нове зображення для ubuntu: останнє
---> 4e2eef94cd6b
Крок 2/6: ОБСЛУГОВУВАЧ Хітеш Джетва
---> Запуск у 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-загальний 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
Тепер ви можете перерахувати щойно створений образ, виконавши таку команду:
зображення докераВи повинні побачити такий результат:
СТВОРЕНИЙ РОЗМІР ІДЕНТИФІКАЦІЇ ЗОБРАЖЕННЯ ТЕГУ РЕПОЗИТОРІЇлампа Dockerfile 2123a857361d 44 секунди тому 520MB
ubuntu остання 4e2eef94cd6b 8 днів тому 73.9 Мб
Тепер у вас є власний образ сервера LAMP у вашій руці. Ви також можете переглянути історію кожної команди за допомогою такої команди:
лампа історії докера:Ви повинні побачити такий результат:
ЗОБРАЖЕННЯ СТВОРЕНО, СТВОРЕНО ЗА РОЗМІРОМ КОМЕНТАРОМ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 лампа: Dockerfile "apachectl -D FOREGR…" 2 хвилини тому Вгору 2 хвилини 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan
Висновок
У цьому посібнику ви дізналися, що таке Dockerfile та як створити образ Docker за допомогою Dockerfile. Це дуже корисно для створення власних зображень, а не для внесення змін у витягнуте зображення.