Установка и настройка 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)
comments powered by Disqus