Работа с docker + docker-compose в Unix/Linux
Запуска docker и его контейнеры вручную — это хорошо, но нужно и автоматизировать все это дело. С утилитой docker-compose — очень легко управлять контейнерами. Наглядный пример ниже.
Установка docker в Unix/Linux
Вот имеются у меня, несколько полезных ссылок в которых описывается установка docker-а.
Установка Docker на Debian/Ubuntu
Установка Docker на CentOS/RedHat/Fedora
В данных статьях описывается процесс установки докера для rpm/deb ОС. Для Mac OS X нужно выполнить подобные действия но с использованием brew команды.
Установка docker-compose в Unix/Linux
Ну, чтобы использовать compose в docker — нужно его установить. Осуществить это можно несколькими способами.
1. Выкачать файл:
Выкачиваем последнюю версию данной утилиты и сохраняем ее в нужное место:
$ curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Выставляем права:
# chmod +x /usr/local/bin/docker-compose
2. Использовать pip:
# pip install docker-compose
И проверяем чтобы все работало:
$ docker-compose --version docker-compose version 1.7.0, build 0d7bf73
Если есть необходимость удалить:
# rm /usr/local/bin/docker-compose
Или если использовали pip:
# pip uninstall docker-compose
Создание docker контейнеров в Unix/Linux
Приводил примеры в своей статье:
Создание docker контейнера в Unix/Linux
По данной статье — создание докер контейнеров ( а в ней я приводил сборку LEMP-а), я соберу кластер из всех этих служб внутри каждого из контейнеров ( т.к по одному из запускать уже не актуально).
Создаем docker-compose.yml файл:
# vim docker-compose.yml
И прописываем в него:
version: "2" services: nginx: image: nginx:latest #environment: # NGINX_SERVER_NAME: docker_machine.local container_name: lemp_nginx restart: always links: - php volumes: - ./DATA/html:/var/www/html/:ro #- ./DATA/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./DATA/nginx/conf.d:/etc/nginx/conf.d:ro ports: - 80:80 - 443:443 networks: - bridge php: image: php:latest container_name: lemp_php restart: always volumes: #- ./DATA/php-fpm/site.conf:/usr/local/etc/php-fpm.d:ro - ./DATA/html:/var/www/html depends_on: - db links: - db networks: - bridge environment: - DB_NAME=lemp_magento - TABLE_PREFIX=lemp_ - DB_HOST=lemp - DB_PASSWORD=magento - PHP_HOST_NAME=localhost:9000 db: image: mariadb:latest container_name: lemp_mariadb restart: always volumes: #- ./DATA/mariadb/my.cnf:/etc/mysql/my.cnf:ro #- ./DATA/mariadb/conf.d:/etc/mysql/conf.d:ro - db-data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root666PW networks: - bridge volumes: db-data: driver: local networks: bridge: driver: bridge ipam: config: - subnet: 172.10.1.0/16 gateway: 172.10.1.255 aux_addresses: nginx: 172.10.1.10 php: 172.10.1.20 db: 172.10.1.30
Для запуска всего этого добра, служит команда:
┌(vagrant@vagrant-ansible)─(✓)─(10:23 pm Sun Feb 05) └─(~/magento2)─(6 files, 12Kb)─> sudo docker-compose up -d Starting lemp_mariadb Starting lemp_php Starting lemp_nginx ┌(vagrant@vagrant-ansible)─(✓)─(10:23 pm Sun Feb 05) └─(~/magento2)─(6 files, 12Kb)─>
Чтобы убить созданное, используем:
$ sudo docker-compose kill Killing lemp_nginx ... done Killing lemp_php ... done Killing lemp_mariadb ... done
Открываем браузер и тестируем созданный стек. А статья «Работа с docker + docker-compose в Unix/Linux» завершена.