Dockerfile е прост текстов файл, който съдържа всички команди, които потребителят може да извика в командния ред за сглобяване или изграждане на изображение. С помощта на докер компилация можете лесно да автоматизирате компилация, която изпълнява множество команди, дефинирани последователно в докер файла.
Например искате да изтеглите изображението на докера от центъра на докера за вашите специфични нужди за развитие. След това искате да актуализирате изображението, да инсталирате някои пакети за вашия процес на разработка. В този случай можете да създадете докер файл, да включите всички параметри за вашите специфични нужди и да изградите вашето персонализирано изображение. След като създадете докер файл, можете да го използвате отново и отново, за да изградите едно и също изображение, без да инсталирате ръчно всички необходими пакети за вашия процес на разработка.
Dockerfile Basic
Преди да работите с dockerfile, ако е важно да знаете как да направите dockerfile. Dockerfile включва конкретни ключови думи, които могат да се използват за изграждане на конкретно изображение. Кратко обяснение на всички ключови думи, използвани в докер файл, са изброени по-долу:
- ОТ: Използва се за определяне на основното изображение, върху което ще надграждаме.
- ДОБАВЕТЕ: Използва се за добавяне на файлове към изграждания контейнер. С прости думи, RUN се използва за изпълнение на команди и ангажира резултата
- РАБОТА: Използва се за добавяне на слоеве към основното изображение чрез инсталиране на компоненти.
- CMD: Използва се за изпълнение на команди в началото на контейнера. Тези команди се изпълняват само когато няма зададен аргумент по време на изпълнение на контейнера.
- ВХОДНА ТОЧКА: Използва се за изпълнение на команди по време на процеса на инициализация на контейнера. Трябва да използвате ENTRYPOINT във вашия dockefile, ако искате автоматично да стартирате контейнер след изграждане на изображение.
- ENV: Използва се за дефиниране на променливи на средата по време на изпълнение на контейнера.
- ЕКСПОЗИЦИЯ: Използва се за определяне на порта за слушане, за да се даде възможност на мрежата по време на изпълнение.
- ПОДДРЪЖНИК: Използва се за посочване на името и имейл адреса на създателя на изображението.
- ПОТРЕБИТЕЛ: Използва се за посочване на потребителското име, използвано за стартиране на контейнера.
- СИЛА НА ЗВУКА: Използва се за разрешаване на достъп от контейнера до директорията на хоста на Docker.
- WORKDIR: Използва се за определяне на пътя на командата, която да се изпълнява по време на изпълнение.
- ЕТИКЕТ: Използва се за добавяне на етикети към изображението на докера.
Създаване на Dockerfile
В този раздел ще създадем докер файл, за да изградим образ на LAMP сървър от базовото изображение на Ubuntu.
Първо, ще трябва да създадете директория за съхраняване на докер файла. Можете да го създадете със следната команда:
mkdir ЛАМПАСлед това създайте директория с име 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", "ПРОСТРАНСТВО"]
ЕКСПОЗИЦИЯ 8080
Запазете и затворете файла, когато приключите.
Изграждане на изображение с Dockerfile
След създаването на Dockerfile можете лесно да създадете персонализиран LAMP образ с помощта на Dockerfile.
Първо, сменете директорията на LAMP и изпълнете следната команда, за да изградите изображението от този файл:
cd LAMPdocker build -t "лампа: Dockerfile".
Горната команда ще започне да изтегля последното изображение на Ubuntu от Docker Hub и ще инсталира необходимите пакети, посочени в Dockerfile. След като изображението е изградено успешно, трябва да видите следния изход:
Изпращане на контекст на компилация до демон на Docker 2.048kBСтъпка 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-често срещан 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.9MB
Сега имате персонализирано изображение на 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 Image
Сега можете да стартирате контейнер от вашето изображение, като използвате следната команда:
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. Това е много полезно за създаване на ваши персонализирани изображения, вместо да извършвате промени в изтеглено изображение.