Руководство по Docker Compose для начинающих
Автор статьи, перевод которой мы сегодня публикуем, говорит, что она предназначена для тех разработчиков, которые хотят изучить Docker Compose и идут к тому, чтобы создать своё первое клиент-серверное приложение с использованием Docker. Предполагается, что читатель этого материала знаком с основами Docker. Если это не так — можете взглянуть на эту серию материалов, на эту публикацию, где основы Docker рассмотрены вместе с основами Kubernetes, и на эту статью для начинающих.
Что такое Docker Compose?
Docker Compose — это инструментальное средство, входящее в состав Docker. Оно предназначено для решения задач, связанных с развёртыванием проектов.
Изучая основы Docker, вы могли столкнуться с созданием простейших приложений, работающих автономно, не зависящих, например, от внешних источников данных или от неких сервисов. На практике же подобные приложения — редкость. Реальные проекты обычно включают в себя целый набор совместно работающих приложений.
Как узнать, нужно ли вам, при развёртывании некоего проекта, воспользоваться Docker Compose? На самом деле — очень просто. Если для обеспечения функционирования этого проекта используется несколько сервисов, то Docker Compose может вам пригодиться. Например, в ситуации, когда создают веб-сайт, которому, для выполнения аутентификации пользователей, нужно подключиться к базе данных. Подобный проект может состоять из двух сервисов — того, что обеспечивает работу сайта, и того, который отвечает за поддержку базы данных.
Технология Docker Compose, если описывать её упрощённо, позволяет, с помощью одной команды, запускать множество сервисов.
Разница между Docker и Docker Compose
Docker применяется для управления отдельными контейнерами (сервисами), из которых состоит приложение.
Docker Compose используется для одновременного управления несколькими контейнерами, входящими в состав приложения. Этот инструмент предлагает те же возможности, что и Docker, но позволяет работать с более сложными приложениями.
Docker (отдельный контейнер) и Docker Compose (несколько контейнеров)
Типичный сценарий использования Docker Compose
Docker Compose — это, в умелых руках, весьма мощный инструмент, позволяющий очень быстро развёртывать приложения, отличающиеся сложной архитектурой. Сейчас мы рассмотрим пример практического использования Docker Compose, разбор которого позволит вам оценить те преимущества, которые даст вам использование Docker Compose.
Представьте себе, что вы являетесь разработчиком некоего веб-проекта. В этот проект входит два веб-сайта. Первый позволяет людям, занимающимся бизнесом, создавать, всего в несколько щелчков мышью, интернет-магазины. Второй нацелен на поддержку клиентов. Эти два сайта взаимодействуют с одной и той же базой данных.
Ваш проект становится всё популярнее, и оказывается, что мощности сервера, на котором он работает, уже недостаточно. В результате вы решаете перевести весь проект на другую машину.
К сожалению, нечто вроде Docker Compose вы не использовали. Поэтому вам придётся переносить и перенастраивать сервисы по одному, надеясь на то, что вы, в процессе этой работы, ничего не забудете.
Если же вы используете Docker Compose, то перенос вашего проекта на новый сервер — это вопрос, который решается выполнением нескольких команд. Для того чтобы завершить перенос проекта на новое место, вам нужно лишь выполнить кое-какие настройки и загрузить на новый сервер резервную копию базы данных.
Разработка клиент-серверного приложения с использованием Docker Compose
Теперь, когда вы знаете о том, для чего мы собираемся использовать Docker Compose, пришло время создать ваше первое клиент-серверное приложение с использованием этого инструмента. А именно, речь идёт о разработке небольшого веб-сайта (сервера) на Python, который умеет выдавать файл с фрагментом текста. Этот файл у сервера запрашивает программа (клиент), тоже написанная на Python. После получения файла с сервера программа выводит текст, хранящийся в нём, на экран.
Обратите внимание на то, что мы рассчитываем на то, что вы владеете основами Docker, и на то, что у вас уже установлена платформа Docker.
Приступим к работе над проектом.
▍1. Создание проекта
Для того чтобы построить ваше первое клиент-серверное приложение, предлагаю начать с создания папки проекта. Она должна содержать следующие файлы и папки:
▍2. Создание сервера
Тут мы, в процессе создания сервера, затронем некоторые базовые вещи, касающиеся Docker.
2a. Создание файлов
Перейдите в папку server и создайте в ней следующие файлы:
2b. Редактирование Python-файла.
Добавим в файл server.py следующий код:
2c. Редактирование HTML-файла
В файл index.html добавим следующий текст:
Этот текст будет передаваться клиенту.
2d. Редактирование файла Dockerfile
Теперь займёмся работой над клиентом.
▍3. Создание клиента
Создавая клиентскую часть нашего проекта, мы попутно вспомним некоторые основы Docker.
3a. Создание файлов
Перейдите в папку вашего проекта client и создайте в ней следующие файлы:
3b. Редактирование Python-файла
Добавим в файл client.py следующий код:
Благодаря этому коду клиентское приложение может загрузить данные с сервера и вывести их на экран.
3c. Редактирование файла Dockerfile
▍4. Docker Compose
Вот код, который нужно поместить в файл docker-compose.yml :
▍5. Сборка проекта
▍6. Запуск проекта
Теперь, когда проект собран, пришло время его запустить. Этот шаг нашей работы соответствует шагу, на котором, при работе с отдельными контейнерами, выполняется команда docker run :
Полезные команды
Рассмотрим некоторые команды, которые могут вам пригодиться при работе с Docker Compose.
Эта команда позволяет останавливать и удалять контейнеры и другие ресурсы, созданные командой docker-compose up :
Эта команда выводит журналы сервисов:
С помощью такой команды можно вывести список контейнеров:
Данная команда позволяет выполнить команду в выполняющемся контейнере:
Такая команда позволяет вывести список образов:
Итоги
Мы рассмотрели основы работы с технологией Docker Compose, знание которых позволит вам пользоваться этой технологией и, при желании, приступить к её более глубокому изучению. Вот репозиторий с кодом проекта, который мы здесь рассматривали.
Уважаемые читатели! Пользуетесь ли вы Docker Compose в своих проектах?
Docker File против Docker Compose. В чем разница
Главное меню » Linux » Docker File против Docker Compose. В чем разница
Эти два термина легко спутать, но также необходимо понимать разницу при разговоре с коллегой или вашим (потенциальным) работодателем.
Dockerfile – это то, что используется для создания образа контейнера, а файл Compose – это то, что используется для развертывания экземпляра этого образа в качестве контейнера.
Позвольте нам остановиться подробнее, чтобы вы правильно поняли разницу между Docker Compose и Dockerfile.
Что такое Dockerfile?
Нам нравится называть Dockerfile предшественником образа контейнера. Вы создаете образ из Dockerfile. Типичным Dockerfile содержит специальные инструкции по сборке, такие команды, как RUN, ADD, COPY, ENTRYPOINT и т.д.
Каждая строка начинается с инструкции для компонента сборки. Эти инструкции не обязательно должны быть написаны заглавными буквами. Следующее действует так же, как и предыдущее.
Из Dockerfile теперь вы можете создать образ контейнера (или образ Docker). Образ – это просто шаблон для запущенных контейнеров, состоящий из нескольких слоев только для чтения. Поскольку это статья не об образах контейнеров, мы воздержимся от излишних разъяснений по этой теме.
Чтобы создать образ из этого Dockerfile, используя интерфейс командной строки docker, выполните следующую команду:
Это создаст изображение с тегами fortune:alpine. Мы пока не собираемся создавать контейнер из этого изображения, это для следующего раздела.
Что такое Composefile?
Composefile используется в двух типах развертываний: в некластерном развертывании с помощью docker-compose и кластерном развертывании с docker swarm.
Чтобы различать эти два типа, мы собираемся обратиться к файлу набора, отвечающему за развертывание кластера, как к файлам стека. Мы расскажем о файлах стека чуть позже.
Компоновка файлов – это часть инструмента, называемого docker-compose. Это клиентское приложение для сервера демона докеров, что-то вроде docker клиента CLI, но вместо того, чтобы каждый раз запускать все команды docker-compose, вы можете повторно использовать один и тот же файл YAML снова и снова и развертывать один и тот же контейнер с тем же конфигурация, как и в первый раз.
Он более читаемый, более удобный в обслуживании, более интуитивно понятный. Один файл компоновки может содержать несколько конфигураций развертывания контейнера.
Давайте возьмем предыдущий образ и развернем его, используя файл набора.
Сохраните файл как docker-compose.yml. Теперь запустите в том же каталоге следующую команду
Подождите и посмотрите, что произойдет.
Что такое файл стека?
Файлы стека идентичны файлам компоновки с аналогичным синтаксисом и большинством внутренних параметров, за некоторыми исключениями. Файлы стека используются для развертывания стеков сервисов в роевом кластере.
Вы можете повторно использовать предыдущий файл композиции непосредственно как файл стека.
Сначала инициализируйте кластер.
Затем запустите команду, подобную следующей
При таком развертывании необходимо проверить вывод, просмотрев журналы службы с помощью docker service logs ….
Подведение итогов
Файлы Dockerfiles и Compose служат разным целям. Если бы я мог построить график, это выглядело бы примерно так
Есть еще одна причина, по которой новичков путают с этими двумя файлами. На файл Dockerfile можно указать через файл Compose, а затем вы можете использовать docker-compose для создания образа.
Например, вы можете переписать предыдущий файл композиции, чтобы
Теперь вы можете запустить создание образа docker-compose build. Или вы также можете запустить сборку docker-compose up –build и сразу запустить контейнер.
Здесь файл Dockerfile передается через файл компоновки, и на первый взгляд может показаться, что это файл компоновки, который отвечает за создание образа, но это не так.
Мы надеемся, что эта статья прояснила, в чем разница между файлом Dockerfile и файлом Compose. Если у вас есть какие-либо вопросы, дайте нам знать в разделе комментариев ниже.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Docker и docker-compose для начинающих. Докеризуем интернет-магазин
Зачем мне понадобился докер? Ну не знал и не знал, сидел не умничал, сейчас-то что началось?
Разбираться с ним меня сподвигли вы, дорогие читатели. Да ладно? Серьезно. Четверть вопросов по интернет-магазину звучит примерно так: не работает, что делать? Почти всегда причина в том, что нужно настроить окружение. Поставить веб-сервер, завести php и mysql, развернуть базу и прочие рутинные штуки.
Вопрос разворачивания рабочего окружения для веб-проектов волновал меня давно.
Когда я начал заниматься первыми веб-проектами, то ухитрился поднять apache, php и mysql на windows 7. Было это лет 8 назад. История из серии «один раз получилось, но повторить не смогу». Это медаль, которую получаешь раз в жизни.
Вторая попытка осмыслить вопрос рабочего окружения случилась в 2015 году. Я тогда написал адовую статью, как развернуть окружение для веб-разработчика. Это было страшно, но я сам так работал. Схема предполагала винду как основную ОС, в винде ставилась виртуальная машина VirtualBox, в которой поднимался debian. В debian уже nginx, php, mysql и nodejs. Также ssh-сервер на виртуалке и ssh-клиент на винде. Все это волшебным образом соединялось вместе и реально работало! Я не жалею, что творил эту дичь, но вам не советую проделывать такой же путь. Просто не надо. Мир стал намного проще.
Но вопрос читателей меня не оставлял. Ведь все мы разные. Одни только начинают разбираться в веб-разработке. Другие работают на винде и им так удобнее. Третьи занимаются фронтендом и им вообще до фонаря эти php и базы данных. Они хотят потрогать javascript-код, а как его потрогаешь, если магазин просто не заводится?
Часто меня выручали системы вроде denwer и open server. Я сам ими не пользовался, но видел со стороны, как это работает, и поэтому советовал. В том же денвере apache, php и mysql поднимаются довольно просто, на мой взгляд. Судя по отзывам, некоторых читателей это выручало.
Но пора было делать следующий шаг.
Докер
Если приложение завернуто в докер, то оно запускается одной командой. По ходу статьи мы увидим, как это делается. Представьте, чтобы посмотреть, как работает авторизация или админка в интернет-магазине, вам нужно лишь скачать исходники и выполнить команду
Конечно, это все звучит здорово, но прежде чем так легко обращаться с докером, нужно разобраться как и что.
Основы докера
Разбираясь в теме, я прочитал десятка три статей по докеру. Но в голове все уложилось только когда я нашел вот эту
Рекомендую статью всем, кто хочет не просто скопипастить примеры из моей статьи, а понять, что такое докер, образы, контейнеры, как монтировать папки и файлы, как запускать команды и еще много полезных вещей. Статья большая, но написано по-человечески, простым языком, с примерами и аналогиями из жизни.
Докер на практике, docker-compose
Здесь случилось то же самое, что и с теорией по основам докера. Я перепробовал много разных вариантов, но то php не заводился, то mysql не подключался. Удалось все сделать только по примеру из этой статьи
Рекомендую читать всем, но особенно тем, кто уже разбирался с docker и docker-compose. Если вы знаете общие принципы или просто хотите завести свой проект, то лучше прочитать эту статью. Автор расписал коротко и по делу. Это не как у меня, статьи только с литром пива читать.
А еще мне понравилась структура проекта из поста. С разрешения автора в своей статье я использую его структуру и конфиги проекта практически без изменений, разве что слегка сократив.
docker и docker-compose. Аналогия для фронтендщиков
Процесс докеризации проекта напоминает мне сборку фронтенда.
В обоих случаях нам нужно решить набор задач. На фронте это собрать весь javascript в один файл и сжать его, препроцессить стили и тоже их сжать, оптимизировать картинки, запустить watcher. А с докером это поднять nginx, php, mysql и развернуть базу.
Для сборки фронта мы используем npm-пакеты, готовые библиотеки для сжатия и склеивания. В докере это готовые образы nginx, php, mysql.
Вот такая у меня аналогия. С общими делами разобрались, переходим к практике
Ставим docker и docker-compose
Докер отлично работает на линуксе и маке. Говорят, на 10-й винде тоже, но не пробовал. Я не знаю, какая у вас система, поэтому смотрите инструкции здесь.
После установки докера перезагрузитесь и проверьте, все ли в порядке
Если что-то не заработает, то наберите такие команды
Структура проекта
Тестовый проект default.test
Он будет очень простой. Закинем в папку www/default.test файлик index.php с содержимым
Вот и весь проект. На первом этапе мы всего лишь убедимся, что правильно настроили nginx и php. Давайте же посмотрим, как это сделать
Конфиг nginx
Это файл hosts/default.conf такого содержимого
Если вам приходилось настраивать nginx, то отличие найдете только одно. Раньше в локейшене \.php$ в fastcgi_pass вы писали что-то вроде
Такой конфиг более менее универсальный и подходит для локальной разработки несложных проектов. В статье мы рассмотрим 3 проекта и конфиги в них будут различаться только 4 строками.
Настраиваем php и Dockerfile для него
По идее можно не делать отдельный Dockerfile для php, а взять готовый образ. Именно так мы сделаем с nginx и mysql, когда будем настраивать docker-compose.yml. Но проблема в том, что nginx и mysql прекрасно работают из коробки, а с php немного иначе. Он тоже работает, но в официальный образ не включены никакие расширения, которые могут понадобиться при работе. Именно поэтому мы будем собирать php хитрее, через Dockerfile.
Давайте посмотрим на конфиг. Это файл images/php/Dockerfile
Напоминаю, что мы взяли конфиги из этой статьи. Я чуть сократил конфиг, поэтому читайте исходный, найдете там еще что-то интересное. Кратко что здесь происходит.
Да, Dockerfile для php посложнее, чем стандартный nginx-конфиг. nginx мы просто будем копипастить, меняя хост и пути. Здесь же, чтобы самому написать такой файл, нужно представлять, как работает php, где хранится php.ini, что такое рабочая директория и как ставить расширения. Но с другой стороны, базовые настройки меняться не будет, главное, разобраться со страшной портянкой в RUN.
А в докере нужно указать его в строке
Если честно, мне пока сложно понять, где и какие команды используются в тех или иных случаях. Поэтому не вижу других способов, чтобы для каждого конкретного случая копать документацию и гуглить. Но повторюсь, для наших проектов большего не понадобится. В Dockerfile мы больше заглядывать не будем.
Конфиг docker-compose.yml
Файл будет такого содержания
Разберем, что здесь написано.
Дальше раздел php. Здесь короче, потому что основное мы указали в Dockerfile
С конфигом docker-compose.yml пока все. Идем дальше
Правим файл hosts
Чтобы наш пробный сайт default.test заработал в браузере, нужно не забыть добавить его в файл hosts. Открываем /etc/hosts с sudo (на unix-системах) и добавляем в него
Точно так же, как и при работе с локальным веб-сервером. Сохраняем файл, закрываем
Запускаем проект
Наконец-то самое интересное, проверим, как все это работает. В консоли из корневой папки проекта запускаем команду
И ждем. Первый запуск будет проходить не быстро. В консоль будет сыпаться до фига всего разного, но можно будет разглядеть, как скачиваются образы ngnix и php, как выполняются команды RUN из php-шного Dockerfile, как запускаются контейнеры.
Если мы все сделали правильно, то увидим в консоли примерно такую картину
done напротив названий контейнеров говорит, что они успешно запущены. Идем в браузер, переходим на http://default.test:8000/ и видим полный расклад phpinfo. Работает!
Мы запустили наш первый проект, завернутый в докер. Не знаю, как вы, а я испытал какой-то священный трепет, когда все это завелось. С ума сойти, я могу просто взять этот проект, перетащить на другой компьютер и запустить его одной командой в консоли. Да, весь проект всего лишь выводит phpinfo, но эта простенькая штука станет базой для разворачивания более сложных проектов, связанных с базой данных да и вообще с чем угодно. Ниже мы научимся подключать в докере mysql и заведем интернет-магазин.
Но сначала немного отвлечемся и посмотрим, какие команды нам пригодятся при работе с docker-compose и вообще с проектами
Как работать с docker-compose
Первой командой, которую мы запустили, был docker-compose up. Команда анализирует конфиг docker-compose.yml, скачивает нужные образы, монтирует файлы и папки и запускает контейнеры. При этом процесс висит в консоли, а чтобы остановить его, нужно нажать ctrl+C, стандартно. А еще в консоли будут выводиться логи docker-compose.
При этом принудительно пересоберутся все образы. Это может быть полезно, когда мы что-то поменяли в конфигах и пока еще не понимаем, требует это пересборки или нет. Принудительный билд занимает больше времени, но я пока предпочитаю всегда его использовать. Все равно после самого первого сбора запуск проходит очень быстро, а потерпеть лишние 2 секунды не проблема.
Тогда докер запустит все контейнеры, но в фоне. Все будет работать точно так же, но чтобы остановить контейнеры, нужно будет запускать
А логи смотреть, запуская отдельно
Если мы разворачиваем приложение в продакшене, то конечно, запускать его стоит как фоновый процесс. Но в режиме разработки мне больше нравится держать консоль открытой и сразу смотреть логи. И не думать, нужна ли пересборка всех образов или нет. То есть запускать
Запускаем второй проект. Мое старое портфолио
Предлагаю немного передохнуть и закрепить информацию. Каким образом? Мы создадим второй проект. Он тоже php-ный, но чуть сложнее одного файла. Там уже подключаются шрифты, стили и javascript. Технически это не будет отличаться от первого default.test, но фишка в другом. Мы увидим, как просто нам теперь создавать новые проекты, а заодно и посмотрим на мое старое портфолио, которое я создал лет 6-7 назад. Это простой сайт на php, где рассказывается, какой я замечательный человек и разработчик.
Создаем новую папку www/w-portfolio.test. Кладем туда файлы проекта. Расписывать их нет смысла, все найдете в исходниках.
То есть мы скопировали конфиг из дефолтного default.conf и поменяли default на w-portfolio. Что может быть проще?
Осталось добавить в файл hosts строку
И перезапустить docker-compose
И открыть в браузере http://w-portfolio.test:8000
Итак, второй сайт разобрали, идем дальше.
Создаем проект интернет-магазина
Все то же самое, что и с проектом w-portfolio.test.
Создаем папку w-shop.test, копируем туда файлы магазина. Если вы читали статьи по магазину или админке, то в курсе, что это за магазин. Можете просто взять свои локальные файлы. А если нет, то взгляните, как этот самый магазин выглядит shop.webdevkin.ru и берите файлы из исходников
Дальше заводим nginx-конфиг w-shop.conf в папке hosts
И прописываем в /etc/hosts строку
Если вы прямо сейчас перезапустите docker-compose, то у вас откроется первая страница http://w-shop.test:8000/ и корзина http://w-shop.test:8000/cart.html. Будет работать даже добавление в корзину. А вот каталог с фильтрами, каталог с пагинацией и отправка заказов не заведутся, потому что там уже включается база. Давайте разбираться, как работать с mysql
Подключаем mysql
Добрались до самого интересного. Идем сразу в конфиг docker-compose.yml и добавим в services новый раздел mysql, вот так
А в раздел php добавим зависимость от нового контейнера
Разбираемся по порядку.
Все, база mysql у нас будет подниматься и будет работать. Но есть одно но. Как с ней работать руками? Чтобы прямо войти и посмотреть.
Конечно, можно подключаться к ней в консоли и фигачить create table и прочие хакерские заклинания, но хочется чего-то попроще. Люди давно изобрели PhpMyAdmin, который стоит на каждом хостинге и нам привычен. Давайте и его заведем в докер.
Устанавливаем PhpMyAdmin
В docker-compose.yml добавляем еще один контейнер
Готово, скоро будем пробовать. Но пока еще раз отвлечемся
Зависимости в docker-compose
Обратите внимание, как мы проставляли зависимости контейнеров друг от друга.
nginx зависит от php, то есть сначала стартует php, а потом nginx. php от mysql, phpmyadmin тоже от mysql и лишь mysql ни от кого не зависит. Она база, она сама по себе работает.
Когда мы запустим docker-compose снова, то увидим в консоли такую картину
Это как раз демонстрирует порядок запуска контейнеров. А останавливаются они в обратном порядке
Но это было отступление, погнали дальше, проверять mysql
Подключаемся к базе через PhpMyAdmin
Полез гуглить. Нашел, что в этом случае нужно из под рута выполнить такой запрос
Чтобы попасть в контейнер, нужно узнать его id. Набиваем docker ps и видим примерно такой список
После этого все заработало и PhpMyAdmin стал пускать без ограничений.
Создаем базу данных интернет-магазина
🐹 Docker Compose: Установка и использование.
Опубликовано 2021-07-09 · Обновлено 2021-11-05
Содержание:
На чем было опробовано:
1. Что такое Docker Compose?
Docker Compose — это инструментальное средство, входящее в состав Docker. Оно предназначено для решения задач, связанных с развёртыванием проектов.
Изучая основы Docker, вы могли столкнуться с созданием простейших приложений, работающих автономно, не зависящих, например, от внешних источников данных или от неких сервисов. На практике же подобные приложения — редкость. Реальные проекты обычно включают в себя целый набор совместно работающих приложений.
Как узнать, нужно ли вам, при развёртывании некоего проекта, воспользоваться Docker Compose? На самом деле — очень просто. Если для обеспечения функционирования этого проекта используется несколько сервисов, то Docker Compose может вам пригодиться.
Например, в ситуации, когда создают web-сайт, которому, для выполнения аутентификации пользователей, нужно подключиться к базе данных. Подобный проект может состоять из двух сервисов — того, что обеспечивает работу сайта, и того, который отвечает за поддержку базы данных.
Технология Docker Compose, если описывать её упрощённо, позволяет, с помощью одной команды, запускать множество сервисов, она работает на Docker‘ах.
2. Разница между Docker и Docker Compose.
Также эти образы можно использовать для запуска приложения как изолированного процесса в пространстве пользователя.
Подробнее, что такое Docker и как его установить на операционную систему CentOS 7, читайте по ссылке на моем сайте.
Docker применяется для управления отдельными контейнерами (сервисами), из которых состоит приложение.
Docker Compose используется для одновременного управления несколькими контейнерами, входящими в состав приложения. Этот инструмент предлагает те же возможности, что и Docker, но позволяет работать с более сложными приложениями.
Docker (отдельный контейнер) и Docker Compose (несколько контейнеров).
3. Подготовка хост-сервера.
3.1. Обновим операционную систему CentOS 7 до актуального состояния:
3.2. Устанавливаем файловый менеджер Midnight Commander и интернет качалку wget:
3.3. Отключим SELinux.
Состояние работы SELinux:
Ответ:
SELinux включен. Отключим его.
Для этого достаточно выполнить замену строки в вышеописанном конфигурационном файле следующей командой:
SELinux выключен.
3.4. Установка Docker.
Перейдите по ссылке и установите Docker компонент, затем вернитесь к данной инструкции и продолжайте установку Docker-Compose.
4. Установка Docker-Compose.
Docker-Compose доступен в обычном репозитории, но версии в репозитории немного отстают от самой крайней и актуальной версии Docker-Compose на сайте производителя данного программного обеспечения.
Внимание! Перед установкой Docker-Compose установите в начале простой Docker!
Крайнюю и актуальную версию Docker-Compose можно посмотреть по ссылке:
Ссылка на крайнюю актуальную версию Docker Compose: https://github.com/docker/compose/releases.
Скачаем крайнюю актуальную версию с GitHub по ссылке, которую вы заранее посмотрели на сайте производителя:
# sudo chmod +x /usr/local/bin/docker-compose
После завершения процесса проверьте установленную версию Docker Compose:
Ответ: docker-compose-version-pic-01.jpg
Внимание! Вам придется выполнять все команды или от root или от sudo, но лучше добавить вашего пользователя в группу docker.
В целях безопасности, мы не будем работать через root, а добавим существующего пользователя в группу docker и перезагрузим службу:
Чтобы Docker-Compose корректно работал, перезапустим службу Docker:
# systemctl restart docker
Еще с Docker придется понять, что теперь не панель управления, а вы должны будете придумать, где разместить ваши данные из контейнера, будь то сайт или что-то еще, что может иметь свои файлы и каталоги. Теперь не будет никаких кнопочек из серии «Файловый менеджер«, которые сразу откроют вам каталог с данными ваших контейнеров. Вы должны сами придумать, где будет работать и размещаться ваш комплекс программ, которые вы запустите с помощью Docker-Compose.
К примеру это будет каталог
5. Настройка Docker-Compose.
Есть Docker port, а есть Published port.
Docker port — это порт, который контейнер будет считать, что использует, а Published это порт, через который будет доступен Docker port на родительской машине. Простыми словами, это проброс портов.
Контейнер — это как виртуальная машина. Его можно удалить, остановить, возобновить, подключиться к терминалу. В общем, делать все, что и с обычным Linux сервером или виртуальной машиной
Dockerfile — это набор инструкций, как нужно создавать контейнер. docker-compose.yml — в докере один Dockerfile это один сервис.
Этот файл объединяет все в одном месте и управляется через команду docker-compose :
Ответ:
6. Запуск docker-compose.
Начнем создание новых контейнеров с docker-compose.
На моём сайте есть пример, как развернуть WordPress с Nginx, php-fpm и MariaDB и PhpMyAdmin с помощью Docker Compose на сервере с CentOS 7.
Примеры команд.
Перейдите в каталог с docker-compose.yml и запустите новые контейнеры на основании созданного docker-compose.yml файла:
Запустите комплекс docker‘ов:
Проверьте состояние контейнеров:
7. Полезные команды.
Рассмотрим некоторые команды, которые могут вам пригодиться при работе с Docker Compose.
7.1. Запуск контейнера.
7. 2. Отладка.
7.3. Управление образами.
# docker image rm NAME (-f force)
# docker image tag SOURCE[:TAG] TARGET[:TAG]
7.4. Docker-compose.
Ответ:
7.5. Другие полезности.
Ответ:
# docker inspect NAME
Ответ:
7.6. Чистка мусора.
Ответ:
# docker network prune
Ответ:
Ответ:
Ответ:
7.7. Прочие команды.
Ответ:
# docker-compose exec [service name] [command]
# docker-compose exec wordpress ls
Ответ:
8. Оригиналы источников информации.
Автор: it_hamster · Published 2021-11-11
🐹 CentOS 7: Как установить и включить SELinux, если его удалили.
Автор: it_hamster · Published 2021-03-30
🐹 CentOS 7: Способы определения типа файловой системы.
Автор: it_hamster · Published 2021-08-14 · Last modified 2021-08-19


















