Установка и настройка docker в Fedora
Как подсказывает нам Викепедия:
Docker
— программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы LXC. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любой Linux-системе.
В целом очень удобный инструмент для разработчиков. Использование в продакшен на свой страх и риск, а я считаю, что еще не дорос. Как минимум, потому что не умеет пробрасывать группы портов.
Установка
Установка Docker происходит очень даже без проблемно, если следовать предоставляемой инструкции.
# dnf install -y docker-io
Теперь у нас есть docker
. Но не надо спешить его запускать, так как необходимо первоначально сконфигурировать сетевой интерфейс, через который он будет работать.
Настройка сети
По умолчанию используется адрес 172.17.42.1
с слишком уж широкой маской подсети 255.255.0.0
. Для посмотреть, проверить и даже некоторое время попользоваться хватит маски 255.255.255.240
. Адрес назначим 192.168.10.1
. Итого можно будет запустить 12 образов. Этого вполне достаточно для любого разработчика или админа локалхоста.
Для того, чтобы запустить сервис docker с необходимыми опциями добавим в файле /etc/sysconfig/docker
опцию –bip (–selinux-enable уже автоматически там включен):
OPTIONS=--selinux-enabled --bip=192.168.10.1/28
Исправление настроек docker0
Но если получилось так, что docker уже был запущен с настройками по умолчанию, то исправить крайне легко. Предварительно остановить 2 сервиса - docker
, docker.socket
, затем отключить интерфейс docker0
удалить его.
После всех действий можно заново запускать docker
и новый интерфейс будет уже с ранее прописанными настройками сети.
# systemctl stop docker
# systemctl stop docker.socket
# ip link set dev docker0 down
# brctl delbr docker0
# systemctl start docker
Перед запуском
Перед запуском не забываем добавить себя в группу docker
для того, чтобы можно было им пользоваться из под своего пользователя.
# usermod -aG docker <username>
Укажем, что уже хотим пользоваться группой docker без перезапуска пользовательского сеанса:
$ exec su -l <username>
Запуск и проверка работоспособности
Запускается процесс:
# systemctl start docker
Если есть желание, то можно скачать контейнер fedora и запустить в нем шелл bash:
$ docker run -i -t fedora /bin/bash
Это стандартный пример проверки, взял с официального сайта.
Управление docker
Посмотреть все загруженные образы:
$ docker images
Запустить остановить контейнер:
$ docker start/stop <container id>
Присоедениться к контейнеру:
$ docker attach <container id>
Просмотреть все запущенные контейнеры:
$ docker ps
При помощи ключа -a
можно посмотреть вообще когда либо запущенные контейнеры.
Запустить, например, MySQL. Возьмем официальный образ и выполним действия указанные в нем:
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql
Проверить информацию о запущенном контейнере¸например, для того, чтобы узнать его IP-адрес:
$ docker inspect <container id>
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container id>
Сохранить изменения произведенные в контейнере:
$ docker commit <container id> <new image name>
А лучший вариант - сделать свой контейнер из Dockerfile
. Полная инструкция как их писать. Инструкция как их собирать.
Удалить все контейнеры:
$ docker rm $(docker ps -a -q)
Удалить все образы:
$ docker rmi $(docker images -q)