Запуск docker контейнеров в Unix/Linux

Запуск 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

Вот полезные статьи:

Пишем systemd Unit файл

Пишем Init скрипт

Пишем Upstart скрипт

Система инициализации в 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» завершена.

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

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

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