Docker - это система для управления контейнерами, которая стала очень популярна в последнее время. Основное преимущество Docker для разработчика в том, что ему достаточно один раз настроить необходимые контейнеры на своей машине, а потом он сможет переносить свою программу на любой сервер будь то Linux или Windows и там будет всё работать, надо только чтобы был установлен Docker.
Приложение запускается в LXC контейнере в котором установлен дистрибутив Linux и набор программ необходимых для выполнения приложения. Таких контейнеров может быть несколько и они могут взаимодействовать между собой по сети. В этой статье мы разберемся как установить Docker в CentOS 8. Процедура практически такая же как и в CentOS 7, но из-за перехода дистрибутива на nftables есть некоторые отличия.
Содержание статьи
- Установка Docker в CeontOS 8
- Установка Docker Compose
- Проверка работы Docker
- Удаление Docker в CentOS
- Выводы
Установка Docker в CeontOS 8
Чтобы получить самую свежую версию программы необходимо сначала добавить официальный репозиторий Docker в систему:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Затем установка Docker CentOS 8 выполняется командой:
dnf install docker-ce
Данные команды будут актуальны как для Fedora и CentOS 7 только для последней будет необходимо поменять пакетный менеджер на yum и репозиторий будет добавляться по другому.
Далее запустите службу Docker и добавьте её в автозагрузку:
systemctl start docker
systemctl enable docker
systemctl status docker
Поскольку CentOS 8 перешла на новую подсистему брандмауэра - nftables, а Docker поддерживает только iptables, то сеть внутри контейнеров работать не будет. Чтобы это исправить надо включить трафик masquerade с помощью firewalld:
firewall-cmd --zone=public --add-masquerade --permanent
Затем перезагрузите фаервол, чтобы правила активные обновились:
firewall-cmd --reload
Установка Docker Compose
Docker обычно устанавливается вместе с инструментом автоматического развертывания и конфигурирования контейнеров docker-compose. Это как раз та утилита, которая поможет поднять ваш проект на другой машине одной командой. Для её установки выполните:
wget "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)"
mv ./docker-compose /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Готово, установка docker compose CentOS 8 завершена и вы можете начать работать с этой утилитой.
Проверка работы Docker
Чтобы убедиться что Docker установлен и работает можно посмотреть его версию:
docker --version
А также можно запустить Hello world контейнер:
docker run hello-world
Также можем посмотреть версию docker-compose:
docker-compose --version
Удаление Docker в CentOS
Удалить Docker CentOS можно просто удалив пакет, который вы ранее установили, для этого выполните:
dnf remove docker-ce
Чтобы удалить docker-compose достаточно удалить файл /usr/local/bin/docker-compose, эта утилита находится только там и её нет больше нигде в системе.
Выводы
В этой статье мы разобрали как установить docker CentOS 8 и решить проблему с сетью в контейнерах. Напишите в комментариях хотите ли вы продолжение этой темы в статьях о том, как пользоваться Docker и Docker compose для разворачивания своих приложений.
не актуально !!!
]# uname -a
Linux localhost.localdomain 4.18.0-193.6.3.el8_2.x86_64 #1 SMP Wed Jun 10 11:09:32 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost load]# systemctl start docker
Failed to start docker.service: Unit docker.service not found.
[root@localhost load]# dnf install docker-ce
Last metadata expiration check: 0:01:04 ago on Mon 29 Jun 2020 04:41:01 PM +05.
Error:
Problem: package docker-ce-3:19.03.12-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
- cannot install the best candidate for the job
- package containerd.io-1.2.10-3.2.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.13-3.1.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.13-3.2.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.2-3.3.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.2-3.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.4-3.1.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.5-3.1.el7.x86_64 is filtered out by modular filtering
- package containerd.io-1.2.6-3.3.el7.x86_64 is filtered out by modular filtering
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
Есть такой косяк, но поправимый.
Просмотри доступные версии, последние версии не устанавливаются на centos 8.
dnf list docker-ce --showduplicates | sort -r
Просто попробуй версию постарше, например:
dnf install -y docker-ce-18.06.3.ce-3.el7 containerd.io
Сюда нормально встает:
[root@centos8x ~]# uname -a
Linux centos8x 4.18.0-305.7.1.el8_4.x86_64 #1 SMP Tue Jun 29 21:55:12 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
(yum/dnf update)
после пункта
$ mv ./docker-compose /usr/local/bin/docker-compose
нужно сделать ссылку
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
ну либо добавить соответствующий путь в переменные окружения
Помимо docker-ce установил сразу и другие компоненты, которые в гайде докера были указаны и все работает как надо. Вот полная строка установки:
dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin