Docker + Consul. Начало

Современные технологии развиваются стремительно, каждый год, а то и реже мы узнаем об очередном прорыве в мире IT и вот, уже н е молодой, но подающий большие надежды проект Docker ворвался в нашу жизнь. По сложившейся традиции, я перейду сразу к делу и расскажу о лучших практиках работы с Docker. так как проект активно развивается, уследить за новыми версиями непросто, а с новыми версиями меняется и функционал, в том числе и ключи запуска и системным администраторам бывает довольно сложно уследить за этой гонкой мысли разработчиков. Для начала работы нам потребуется дистрибутив Centos7-minimal. Далее переходим к установке и настройке Docker. Внимание, инструкция работает только для Docker версии 1.12 и выше (это на будущее :)! Обычно мы устанавливаем Docker командой:
yum install docker
Однако, с развитием Docker изменился не только синтаксит его ключей, но и процесс установки. Установка docker-engine подробно описана на сайте: https://docs.docker.com/engine/installation/linux/centos/, я ее также опишу.
tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
yum clean all
yum install docker-engine -y
Для storadge мы будем использовать драйвер overlay2: https://docs.docker.com/engine/userguide/storagedriver/selectadriver/. Для этого потребуется поставить довольно новое ядро и включить режим хранения в докере overlay2:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml
В файле /boot/grub2/grubenv меняем на установленное ядро. Правильную строчку можно посмотреть в /boot/grub2/grub.cfg
saved_entry=CentOS Linux (4.8.1-1.el7.elrepo.x86_64) 7 (Core)
Далее добавим файл автозапуска Docker в systemd:
mkdir -p /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/docker.conf

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --config-file=/etc/docker/daemon.json
Создаем конфиг докера в json формате. Устанавливаем dns сервера, суффикс для имен, тип хранилища данных, адрес на дефолтом бридже docker0:
mkdir /etc/docker
vi /etc/docker/daemon.json
{
        "dns": ["172.18.0.1","77.88.8.8","77.88.8.1","8.8.8.8","8.8.4.4"],
        "dns-search": ["service.consul"],
        "storage-driver": "overlay2",
        "bip": "172.18.0.1/24" 
}
Обращаю ваше внимание, что в данном случае IP: 172.18.0.1 был назначен из-за того что в Docker создан bridge-интерфейс. Если у вас не используется bridge-интерфейс, вам следует указать IP интерфейса docker0 (обычно это 172.17.0.1/24). Применяем изменения и смотрим что они добавились:
systemctl daemon-reload
systemctl cat docker
Как правило, хватает service docker reload для изменения конфигов
systemctl reload docker
В следующих статьях мы рассмотрим процесс создания Docker контейнеров и в этом нам сильно поможем docker-compose, поэтому сразу поставим его на сервер:
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose

Добавить комментарий