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 для разворачивания своих приложений.
Если вы искали альтернативу почтовому сервису Gmail, который уважает вашу конфиденциальность, обратите внимание на ProtonMail. Ваши письма автоматически шифруются сквозным шифрованием, поэтому читать их можете только вы и получатель. ProtonMail не собирает ваши персональные данные и базируется в Швейцарии, где действуют одни из самых строгих законов о конфиденциальности. Посмотреть детали











не актуально !!!
]# 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