Різниця між dockerfile і docker-compose Давайте коротко розглянемо процес використання docker, який поділяється на створення образів і запуск контейнера.
Конструювання зображень: тобто створення образу, який містить середовище, програмний код тощо, необхідні для встановлення та експлуатації. Цей процес створення здійснюється за допомогою dockerfile.
Запуск контейнера: Контейнер нарешті запускається шляхом витягування створеного образу і запуску сервісу через серію інструкцій (наприклад, відображення портів, зовнішнє монтування даних, змінні середовища тощо). Для одного контейнера це можна запускати через docker run.
Якщо це передбачає запуск кількох контейнерів (наприклад, оркестрація сервісів), його можна реалізувати через docker-compose, який легко запускає кілька контейнерів як сервіс (звісно, лише один із них) і виконує функцію масштабування (масштабування сервісу).
Короткий підсумок:
1.dockerfile: створити образ;
2. Запуск докера: запуск контейнера;
3. docker-compose: Запустити сервіс;
Почніть з початку. Якщо ви не користуєтеся docker, як ви створюєте WordPress? Спочатку знайдіть сервер, припустіть, що його ОС — Ubuntu, а потім крок за кроком слідуйте документації, введіть команду і напишіть конфігурацію, так? А як щодо використання docker? Просто знайдіть сервер, незалежно від операційної системи, якщо він підтримує docker, docker запускає Ubuntu, docker витягне останній образ Ubuntu з офіційного джерела, можна уявити це як відкриття віртуальної машини Ubuntu, а потім встановити її крок за кроком, як вище.
Однак ця інсталяція має суттєвий недолік: після видалення контейнера жодної роботи не виконується. Звісно, ви можете використати docker commit, щоб зберегти його як образ, щоб його можна було повторно використовувати.
Але зображення зазвичай велике, і якщо ви ділитеся лише ним, інші не знатимуть, що саме містить ваше зображення, що не сприяє поширенню та повторному використанню. Інтуїтивно зрозумілим рішенням є написати скрипт, який записує весь процес встановлення, щоб при повторній установці ви могли виконати скрипт. Dockerfile — це один із таких скриптів, який документує процес створення образу. З Dockerfile просто запускай docker build. Ви можете створити зображення, і Dockerfile — це текстовий файл, який дуже легко змінювати.
Тепер, коли у вас є образ WordPress, потрібно лише запустити docker, щоб запустити WordPress.
Якщо це лише WordPress — цього достатньо. Але часто для запуску сервісу потрібно кілька зображень, таких як nginx, mysql, mail service тощо. Частіше nginx, mysql і smtp — це всі зображення, і ці зображення працюють разом, щоб служити проєкту. Docker-Compose — це рішення цієї проблеми. Інформація про те, які зображення потрібні вашому проєкту, як налаштувати кожне зображення, які об'єми монтувати тощо, включена у docker-compose.yml. Щоб запустити сервіс, потрібно лише зробити docker-compose up, а для зупинки — docker-compse stop/down
Коротко кажучи, Dockerfile записує процес створення одного зображення docker-compse.yml — процес створення проєкту (зазвичай кількох зображень).
Ви сказали, що деякі туторіали використовують dockerfile+docker-composate, бо docker-compose.yml сам не містить інформації про збірку образу, і якщо образ витягнутий із реєстру docker, то dockerfile не потрібен; Якщо образ потрібно зібрати, потрібно надати Dockerfile.
docker-composeЦе контейнер оркестрації. Наприклад, у вас є PHP-образ, Mysql-образ і nginx-образ. Якщо docker-compose немає, то щоразу при запуску потрібно вводити параметри запуску кожного контейнера, змінні середовища, ім'я контейнера, вказувати параметри посилання різних контейнерів і виконувати низку операцій, що досить громіздко. Після використання docker-composer ви можете одночасно записувати ці команди у docker-composer.yml файлі, і щоразу, запускаючи все середовище (включаючи 3 контейнери), потрібно лише ввести команду docker-composer up.
dockerfileРоль полягає у створенні дзеркального відображення з нуля. Він містить середовище, програмний код тощо, необхідні для встановлення та експлуатації. Цей процес створення здійснюється за допомогою dockerfile. Dockerfile — Підготовлено для команди docker build для створення окремого образу, який також можна використовувати в docker-compose для живої збірки docker-compose.yml - Скрипт для docker-compose, який може одночасно керувати кількома контейнерами, включно з відносинами між ними, чи то з офіційним образом, чи з власним зображенням, різними визначеннями мережевих портів, визначенням простору зберігання тощо |