Установка Docker на CentOS/RedHat/Fedora
Docker – открытый движок, автоматизирующий развертывание приложений в легковесные, переносимые, самодостаточные контейнеры, которые могут без изменений переноситься между серверами.
Тот же самый контейнер, который разработчик создает и тестирует на ноутбуке, может быть легко перенесен на продакшн-сервера в облако и так же легко смигрирован в другой регион при необходимости.
Основные способы использования Docker:
- Автоматизация упаковки и развертывания приложений
- Создание собственных легковесных PaaS окружений
- Автоматизация тестирования и непрерывной интеграции/развертывания
- Развертывание и масштабирование веб-приложений, баз данных и сервисов бекенда
В данной статье «Установка Docker на CentOS/RedHat/Fedora» я расскажу как можно установить Docker на CentOS\RedHat или Fedora.
Если не знаете версию ОС, то проверить можно:
Установка Docker на CentOS/RedHat.
В то время как пакет Докер предоставляется по умолчанию как часть CentOS-7, это предусмотрено в хранилище EPEL для CentOS-6. Пожалуйста, обратите внимание, что это немного меняет инструкции по установке различных версий. Если вам потребуется последняя версия, вы всегда можете использовать самую последнюю версию и скачать его бинарный файл, который работает на ядре 3.8 или выше.
Эти инструкции работают для CentOS 6 и более поздних версий. Они, скорее всего, будут работать для других бинарных совместимых дистрибутивов EL6, таких как Scientific Linux, но они не были проверены.
Пожалуйста, обратите внимание, что из-за существующих ограничений Docker, он может работать только на 64-битной архитектуры.
Чтобы запустить Docker вам нужно CentOS6 или выше, с ядром версии 2.6.32-431 или выше.
Установка Docker на CentOS 7
-===Способ 1===- Docker включен по умолчанию в хранилище CentOS-Extras. Для установки просто запустите следующую команду:
Ручная установка последней версии При использовании пакета что представлен выше, рекомендуемым способом установки Docker, вы можете не поставить последнюю версию. Если вам потребуется последняя версия, вы можете устанавливать программу напрямую для этого нужно скачать исходный код программы.
При установке бинарного файла без пакета, вы можете интегрировать Docker с Systemd. Для этого просто установите две единичные файлы (service и socket) из репозитория GitHub к /etc/systemd/system.
FirewallD CentOS-7 реалезована firewalld -обертка вокруг IPTables и которая может конфликтовать с Докер.
Когда firewalld будет запущен или перезапущен, то он будет удалять связь с докер от IPTables, предотвращая Docker и давая возможность работать ему должным образом.
При использовании Systemd, firewalld запускается до запуска докера, но если вы запустите или перезапустите firewalld после запуска докера, вам придется перезапустить сам демон Docker.
-===Способ 2 — использовать официальный репозиторий===-
Устанавливаем необходимое ПО:
Устанавливаем последнюю версию Docker CE на CentOS:
Установка Docker на CentOS 6
-===Способ 1===-
Пожалуйста, обратите внимание, что это для CentOS-6, этот пакет является частью дополнительных пакетов для Enterprise Linux (Epel), по этому нужно подключить EPEL репозиторий.
Пакет docker-io обеспечивает установку Docker через Epel.
Если вы уже установили (не связанный) докер пакет, он будет конфликтовать с Docker-IO. Чтобы продолжить установку c Docker-IO, пожалуйста, удалите докер в первую очередь.
Далее, давайте установим docker-io пакет, который установит Docker:
-===Способ 2 — использовать официальный репозиторий===-
Приводил пример установки вверху.
Установка Docker на Fedora
Docker CE поддерживает:
- Fedora 25
- Fedora 24
Устанавливаем нужное ПО:
Устанавливаем последнюю версию Docker CE:
Использование Docker на CentOS/RedHat/Fedora
После установки Docker, вы должны будете запустить докер демон:
Или (CentOS 7/RHEL 7/Fedora 24-25):
Если вы хотите чтобы Docker запускался при загрузке вашей ОС, то выполните:
Или (CentOS 7/RHEL 7/Fedora 24-25):
Теперь давайте убедиться, что Докер работает. Сначала нужно получить последнюю версию CentOS образа:
Так можно получить и другие дистрибутивы Linux: Debian, Ubuntu и может еще и другие. Я скачаю еще 1 образ:
Но это скачает образ ОС, так же можно скачать готовый контейнер с готовой программой ( например nginx, apache mysql и так далее), выполнив:
package_name — имя программы (готовый контейнер с программой).
Вы можете видеть все образы при помощи команды:
Вывод образов в докер
Запустим оболочку Bash чтобы протестировать образ:
В этом случае имя контейнера сгенерировался в автоматическом режиме, но вы можете его задать вручную ( расскажу попозже).
Давайте установим в контейнер текстовый редактор vim:
Если все работает правильно, вы получите простой вывод от баш. Введите «exit» для выхода. Когда вы выйдите из контейнера, то он остановился.
Можно вывести все запущенные контейнеры следующей командой:
На рисунке что выше при использовании команды «docker ps -a» видно имя моего контейнера. Данная команда показывает все существующие контейнера, чтобы вывести только запущенные контейнеры:
Когда вы создадите контейнер, то его имя генерируется автоматически, но если вы желаете поменять на другое имя, но при создании контейнера:
my_container — это имя моего контейнера.
Может не запуститься, то тогда можно запустить по-другому:
ВНИМАНИЕ! Команда «run»- это команда для создания и запуска нового контейнера.
Работать с контейнером можно не только по его ID, но и по созданному имени. Давайте запустим нужный контейнер:
ВНИМАНИЕ! Команда «start»- это команда для запуска уже существующего контейнера.
После того как мы его запустили, можно подключиться к контейнеру, сделать это можно командой attach:
Если нечего не происходит, то нажмите «Enter», тогда вы войдете в bash в самом контейнере.
Все изменения в существующем вашем контейнере вы можете закоммитить в образ чтобы в будущем можно было воспользоваться им:
Перенос образа на другой хост Например, вы уже все настроили (все ваши приложение в Docker и так же закоммитили в образ), то после этого всего можно уже смело сохранить образ в файл для переноса на другой хост:
После чего необходимо скопировать данный архив (образ) на другой хост ( предположим через scp) и нужно после чего импортировать его в Docker.
Вот и все, можно легко переносить свои приложения между хостами, облаками и собственными серверами. Никакого vendor–lock. Только ради этого стоит использовать Docker! (если вы сохраняли данные на примонтированную файловую систему, не забудьте перенести и их).
Создание контейнер-демона Конечно, можно создавать и долго живущие контейнеры, подходящие для запусков приложений и сервисов. Такие контейнеры не имеют интерактивной сессии:
container_name – имя контейнера.
Можно посмотреть, что происходит внутри вашего контейнера используя:
Если необходимо остановить ваш контейнер, то воспользуйтесь:
Чтобы запустить ваш контейнер выполните:
выполнение цикла while продолжится в контейнере.
Чтобы посмотреть детали вашего контейнера используйте:
Для удаления вашего контейнер, используйте:
Создаем (прописываем) имя хоста в своем контейнер:
Так же можно добавить параметр который добавит корректное имя вашего контейнера (я рассказывал это вверху).
Ложить/достать данные в контейнер? Еси Вы хотите скопировать данные в контейнер или извлечь из него что то:
Например нужно скачать с контейнера некоторый файл и положить его в домашнюю директорию:
bcfa1008952e -это ИД самого контейнера
Можно подмонтировать папку хоста в контейнер при создании:
/tmp – это путь к папке на вашем хосте. /root – путь к папке на вашем сервере.
Так вы легко можете работать с данными из контейнера с данными на хосте и исключить необходимость копирования данных в обе стороны.
Удаление образа
Удаление всех образов
Убить все процессы в контейнирах и удалить их:
Примечание: Замените «kill» на «stop» для постепенного выключения всех контейнеров.
Удалить все образы начиная с «заданных образов»
Вы можете использовать Grep, чтобы удалить все, кроме my-image и centos.
Удалить все образы «<none>»
Как пробросить порт в созданном контейнере Docker?
Замечание: Нужно стартануть тот контейнер на котором нужно пробросить порт и запускаем команду что выше. Она откроет порт «80» на 192.168.103.193 ИП.
ПРИМЕР.
Я поставлю уже готовый контейнер только с одной программой — nginx:
192.168.103.189 — ИП адрес виртуальной машины. 8080 — это порт на котором будет работать nginx. 80 — это порт на котором работает докер.
Если не указать IP адрес, то он будет слушать все ИП адреса.
Создание своего репозитория (своего контейнера).
Dockerfiles Вы можете посмотреть готовые решения для docker (шаблоны) которые доступны на GitHub: https://github.com/CentOS/CentOS-Dockerfiles
Пользовательские варианты Если вам нужно добавить прокси сервер или подробная работа докер с Systemd, а так же установить другой каталог или раздел для файлов во время выполнения Docker, или сделать другие настройки, то читайте документацию на официальном сайте Docker. Мне это не нужно было, по этому я не стал описывать подробно, но попозже я обязательно добавлю информацию по данной теме в этот раздел.
Установка Docker на Fedora. Docker доступен в Fedora 19 или версии выше. Пожалуйста, обратите внимание, что из-за существующих ограничений Docker, он может работать только на 64-битной архитектуры.
Пакет docker-io обеспечивает установку Docker на Fedora. Если у вас есть (не связанный) докер пакет и он уже установлен, то он будет конфликтовать с Docker-IO. Для продолжения установки docker-io на Fedora 19, пожалуйста, удалите докер для избежание конфликтов:
Для Fedora 21 или более позней версии, пакет wmdocker обеспечит такую же функциональность как докер, а также будет не конфликтовать с Docker-IO:
Установите пакет docker-io, который установит Docker:
Чтобы обновить пакет docker-io:
Теперь, когда он установлен, давайте запустим демон Docker:
Если Вы хотите чтобы Docker запускался при загрузке вашей ОС, вы должны также выполнить:
Теперь давайте убедиться, что Докер работает, для этого выполним команду:
Примечание: Если вы получаете ошибку «Cannot start container error mentioning SELinux or permission denied» — не удается запустить контейнер или доступ запрещен, вам возможно, потребуется обновить политику SELinux:
После чего нужно перезагрузить ОС:
Предоставление пользователям права на использование Docker. Fedora 19 и 20 поставляется с Докер 0.11.Пакет уже был обновлен до 1.0 для Fedora 20. Если вы все еще используете версию 0.11, то Вы должны будете предоставить права пользователям Докер.
Команды докера с использованием инструментов командной строки для процесс-демона докер через socket файла /var/run/docker.sock, должен принадлежать группе docker. Надо быть членом этой группы, чтобы связаться с -d процессом Docker:
Добавление пользователей в Докер группы не является необходимым для Docker версии 1.0 и выше.
Пользовательские варианты Если вам нужно добавить прокси сервер или подробная работа докер с Systemd, а так же установить другой каталог или раздел для файлов во время выполнения Docker, или сделать другие настройки, то читайте документацию на официальном сайте Docker. Мне это не нужно было, по этому я не стал описывать подробно, но попозже я обязательно добавлю информацию по данной теме в этот раздел.