Установка Docker на CentOS/RedHat/Fedora

Docker – программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы, например, LXC. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любой Linux-системе с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.

Тот же самый контейнер, который разработчик создает и тестирует на ноутбуке, может быть легко перенесен на продакшн-сервера в облако и так же легко мигрирован в другую область при необходимости.

Основные способы использования Docker:

  • автоматизация упаковки и развертывания приложений;
  • создание собственных легковесных PaaS окружений;
  • автоматизация тестирования и непрерывной интеграции/развертывания;
  • развертывание и масштабирование веб-приложений, баз данных и сервисов бэкенда.

В данной статье “Установка Docker на CentOS/RedHat/Fedora” мы опишем, как можно установить Docker на CentOS, RedHat или Fedora.

Если Вы не знаете версию ОС, то проверить её можно следующим образом:

Установка Docker на CentOS/RedHat.

В то время, как пакет Docker предоставляется по умолчанию совместно с CentOS 7, то для CentOS 6 он находится в репозитории EPEL. Пожалуйста, обратите внимание, что это немного меняет инструкцию по установке для различных версий. Вы всегда можете использовать самую последнюю версию и скачать его бинарный файл, который работает на ядре 3.8 или выше.

Эти инструкции работают для CentOS 6 и более поздних версий. Они, скорее всего, будут работать для других бинарных совместимых дистрибутивов EL6, таких как Scientific Linux, но они не были проверены.

Пожалуйста, обратите внимание, что из-за существующих ограничений Docker может работать только на 64-битной архитектуре.

Чтобы запустить Docker, Вам нужен CentOS 6 или выше с ядром версии 2.6.32-431 или выше.

Установка Docker на CentOS 6
Пожалуйста, обратите внимание, что для CentOS , этот пакет является частью дополнительного репозитория Enterprise Linux (EPEL), поэтому его нужно подключить.

Если вы используете RHEL/CentOS 6 с 32-битной архитектурой

Если вы используете RHEL/CentOS 6 с 64-битной архитектурой

Пакет docker-io обеспечивает установку Docker через Epel.

Если Вы уже установили несовместимый с docker-io Doker-пакет, он будет конфликтовать с Docker-IO. Чтобы продолжить установку c Docker-IO, Вам необходимо удалить не совместимый Docker-пакет.

Далее необходимо установить Docker-IO, который, в свою очередь, установит Docker:

Использование Docker

Когда установка Docker будет завершена, следует запустить Docker-демон:

Если вы хотите, чтобы Docker запускался при загрузке вашей ОС, то выполните следующее:

Теперь необходимо убедиться, что Docker работает. Сначала нужно получить последнюю версию CentOS образа:

Таким же образом можно получить и другие дистрибутивы Linux (Debian, Ubuntu и иные *nix-подобные). Для примера скачаем еще 1 образ:

Команды, описанные выше, скачают лишь образ ОС. При желании можно скачать уже готовый контейнер с определённым ПО (например, nginx, apache, mysql и т. д.), выполнив:

где package_name – имя программы (готовый контейнер с программой).

Увидеть все образы Вы можете при помощи команды:

Установка Docker

Запустим оболочку Bash, чтобы протестировать образ:

В этом случае имя контейнера сгенерировалось в автоматическом режиме, но Вы можете задать его вручную (см. ниже).

Давайте установим в контейнер текстовый редактор vim:

Если все работает правильно, Вы получите простой вывод от bash. Введите “exit” для выхода. При выходе из контейнера его работа останавливается.

Можно вывести все запущенные контейнеры следующей командой:

Установка Docker

На рисунке Выше при использовании команды “docker ps -a” видно имя контейнера. Данная команда показывает все существующие контейнеры.

Чтобы вывести только запущенные контейнеры, выполните следующую команду:

Как отмечалось выше, при создании контейнера его имя генерируется автоматически, но если Вы желаете его изменить, выполните следующее:

Если команда, описанная выше, не сработает, то попробуйте выполнить другую:

ВНИМАНИЕ! Команда “run”- это команда для создания и запуска нового контейнера.

Работать с контейнером можно не только по его ID, но и по созданному имени. Давайте запустим нужный контейнер:

ВНИМАНИЕ! Команда “start”- это команда для запуска уже существующего контейнера.

После того, как мы запустили контейнер, слудет к нему подключиться, используя команду attach:

Если ничего не происходит, то нажмите “Enter”, тогда Вы войдете в bash в самом контейнере. 

Все изменения в существующем Вашем контейнере Вы можете закоммитить в образ, чтобы в будущем можно было воспользоваться им:

Перенос образа на другой хост
Например, если Вы уже все настроили (установили необходимые приложения в Docker и так же закоммитили всё это в образ), можно смело сохранять образ в файл для переноса на другой хост:

После чего необходимо перенести данный архив (образ) на другой хост (например, через scp) и затем импортировать его в Docker следующей командой:

Вот и все, можно легко переносить свои приложения между хостами, облаками и собственными серверами. Никакого ограничения по железу. Это является одним из главных преимуществ Docker и это стоит внимания!

ВНИМАНИЕ! Если Вы сохраняли данные на примонтированную файловую систему, не забудьте их перенести.

Создание контейнер-демона
Можно создавать и долгоживущие контейнеры, подходящие для запуска приложений и сервисов. Такие контейнеры не имеют интерактивной сессии:

где container_name – имя контейнера.

Можно посмотреть, что происходит внутри вашего контейнера, используя следующую команду:

Если необходимо остановить контейнер, воспользуйтесь следующим:

Чтобы запустить контейнер, необходимо выполнить:

В момент старта выполнение цикла while продолжится с момента последней остановки.

Чтобы посмотреть детали вашего контейнера, выполните следующее:

Для того, чтобы удалить Ваш контейнер, воспользуйтесь данной командой:

Для того, чтобы прописать имя хоста в своем контейнере, необходимо выполнить:

Также можно добавить параметр, который позволит установить корректное имя Вашего контейнера (см. выше).

Положить/достать данные в/из контейнера
Если Вы хотите скопировать данные в контейнер или извлечь из него что-либо, воспользуйтесь этой командой:

Например, нужно скачать из контейнера некоторый файл и положить его в домашнюю директорию, для этого выполним:

где bcfa1008952e — это ID самого контейнера

Примонтировать папку хоста в контейнер при создании можно следующим образом:

/tmp – это путь к папке на Вашем хосте.
/root – путь к папке на Вашем сервере.

Так Вы легко можете работать с данными из контейнера и с данными на хосте. Как следствие, исключается необходимость копирования данных в обе стороны.

Удаление образа

Для того, чтобы удалить образ, выполните следующее:

Удаление всех образов

Для того, чтобы удалить все образы, выполните:

Завершить все процессы в контейнерах и удалить их:

или

или

Примечание: Замените “kill” на “stop” для постепенного выключения всех контейнеров.

Удалить все образы, начиная с тех, которые Вы задали:

Вы можете использовать команду grep, чтобы удалить все, кроме my-image и centos, например.

Удалить все образы типа “<none>”

или

Как пробросить порт в созданном контейнере Docker?

Воспользуйтесь данной командой:

Примечание: Вначале запускаем контейнер, на котором необходимо пробросить порт, а затем выполняем команду приведенную выше. Она откроет порт “80” на IP 192.168.103.193.

ПРИМЕР.

Запускаем уже готовый контейнер только с одной программой – nginx:

где 192.168.103.189 – IP-адрес виртуальной машины;
        8080 – порт, на котором будет работать nginx;
        80 – порт, на котором работает Docker.

Если не указать IP-адрес, то контейнер будет слушать все доступные IP.

Dockerfiles
Вы можете посмотреть уже готовые решения для Docker (шаблоны), которые доступны на GitHub.

Установка Docker на Fedora.
Docker доступен в Fedora 19 или версии выше. Пожалуйста, обратите внимание, что из-за существующих ограничений Docker он может работать только на 64-битной архитектуре.

Если Вы уже установили несовместимый с docker-io Doker-пакет на Fedora, он будет конфликтовать с Docker-IO. Чтобы продолжить установку c Docker-IO, пожалуйста, удалите несовместимый Docker-пакет:

Для Fedora 21 или более поздней версии пакет wmdocker обеспечит такую же функциональность, как Docker, и не будет конфликтовать с Docker-IO:

Установите пакет docker-io для последующей установки Docker:

Чтобы обновить пакет docker-io, выполните следующее:

Теперь, когда он установлен, давайте запустим демон Docker:

Если Вы хотите, чтобы Docker запускался при загрузке вашей ОС, Вы должны также выполнить:

Теперь необходимо убедиться, что Docker работает, для этого выполним команду:

Примечание: Если вы получаете ошибку “Cannot start container error mentioning SELinux or permission denied” – не удается запустить контейнер или доступ запрещен, Вам, возможно, потребуется обновить политику SELinux:

После этого нужно перезагрузить ОС: