Запуск docker контейнеров в Unix/Linux
Хотелось бы создать очередную заметку с темой «Запуск docker контейнеров в Unix/Linux». Я уже работал не раз с docker-ами, но не создавал кластер ( запуск служб одновременно).
Установка docker в Unix/Linux
Установка Docker на Debian/Ubuntu
Установка Docker на CentOS/RedHat/Fedora
Установка Docker на MacOS X (скоро будет). Для Mac OS X нужно выполнить подобные действия но с использованием brew команды.
Создание docker контейнеров в Unix/Linux
Приводил примеры в своей статье:
Создание docker контейнера в Unix/Linux
Запуск docker контейнеров в Unix/Linux
Имеется несколько вариантов как можно синхронно запускать docker контейнеры:
- Использовать init/systemd;
- Использовать kubernetes;
- Использовать supervisord;
- Использовать docker-compose.yml;
Использование init/systemd
Конечно это глупо использовать, но почиму бы и да!
Пример будет выглядеть вот так:
[Unit] Description=Some service Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/bin/docker start -a container_name ExecStop=/usr/bin/docker stop -t 2 container_name [Install] WantedBy=multi-user.target
Или можно создать файл, такие как в /etc/init с содержанием:
Description "My container" start on filesystem and started docker stop on runlevel [!2345] respawn script /usr/bin/docker start -a mycontainer end script pre-stop script /usr/bin/docker stop mycontainer end script
Вот полезные статьи:
Система инициализации в Unix/Linux
Использование kubernetes
Описывал установку k8s в моей теме:
Установка Kubernetes в Unix/Linux
Использование supervisord
Как по мне, тоже не логично уже использовать данное «чудо» и по этому, я не стал описывать пример.
Использование docker-compose в docker
Я приведу наглядный пример как это будет выглядеть ( я о запуске кластера с докерами), но для начала — я создам несколько docker-ов. Примем возьму классический LEMP — установлю nginx + mysql + php-fpm в разных докерах и выполню синхронный запуск.
Установка docker-compose тут:
Установка docker-compose в Unix/Linux
Этой теме, я выделил полностью статью:
Работа с docker + docker-compose в Unix/Linux
Использование console в Unix/Linux
Можно запустить докер контейнер прямо через консоль.
Запускаем созданный контейнер:
$ docker run -d -p 80:80 -p 443:443 centos7/nginx_lua
Или чтобы попасть на машинку:
# docker run -t -i centos7/nginx_lua /bin/bash
Еще примеры:
$ docker run -it --dns=8.8.8.8 --name="mycontainer1" docker.io/ubuntu:latest /bin/bash
И:
$ docker run -it --dns=8.8.8.8 --dns-search="mydomain.local" --name="mycontainer2"
Так же, еще один пример:
$ docker run -it --dns=8.8.8.8 --dns-search="mydomain.local" --name="mycontainer3" -v /local_vol -v /home/tcox:/remote_vol docker.io/ubuntu:latest /bin/bash
Взял пример из моей статьи:
Создание docker с nginx + lua на CentOS7
Вот еще кое-что полезное:
Остановить/Удалить все Docker контейнеры
А на этом у меня все, статья «Запуск docker контейнеров в Unix/Linux» завершена.