Работа с docker + docker-compose в Unix/Linux

Работа с 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» завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.