понедельник, 14 декабря 2015 г.

Настройка связки Docker Machine и VMware vSphere

Docker Machine предназначен для автоматизации развертывания виртуальных машин (хостов) с настроенным Docker на различных платформах виртуализации. Использование Docker Machine позволит избавиться от необходимости выполнять настройки вручную для каждого хоста в отдельности, а также, по мере необходимости, увеличивать или уменьшать размеры фермы Docker. На текущий момент Docker Machine имеет драйверы для интеграции с VMware vSphere, VMware Fusion и VMware vCloud Air.

Ниже приведен пример установки Docker Machine для 64-битной версии Ubuntu 14.04.

Подготовительные шаги

Перед установкой Docker Machine потребуется установить Docker Client. Для установки Docker добавьте публичный ключ репозитория:
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Отредактируйте файл /etc/apt/sources.list.d/docker.list добавив в него репозиторий:
deb https://apt.dockerproject.org/repo ubuntu-trusty main
Обновите информацию о пакетах:
apt-get update
Установите docker-engine:
apt-get install docker-engine
Корректность установки можно проверить, выполнив команду:
docker version
Для интеграции с VMware vSphere используется набор утилит govc. Для установки govc выполните следующие команды:
wget https://github.com/vmware/govmomi/releases/download/v0.2.0/govc_linux_amd64.gz
gzip -d govc_linux_amd64.gz
chmod +x govc_linux_amd64
mv govc_linux_amd64 /usr/local/bin/govc
В данном примере устанавливается версия 0.2.0. Ссылку на актуальную версию бинарников govc под нужную платформу можно найти в заметках к релизу: https://github.com/vmware/govmomi/releases).

Корректность установки можно проверить, выполнив команду:
govc version
Опционально, вы можете заранее загрузить актуальный образ boot2docker.iso (ссылку на актуальную версию можно найти здесь: https://github.com/boot2docker/boot2docker/releases). Если этого не сделать, то при создании нового хоста Docker Machine самостоятельно скачает образ:
wget https://github.com/boot2docker/boot2docker/releases/download/v1.9.1/boot2docker.iso
mkdir -p ~/.docker/machine/cache/
mv boot2docker.iso ~/.docker/machine/cache/

Установка Docker Machine

Для установки Docker Machine выполните:
curl -L https://github.com/docker/machine/releases/download/v0.5.2/docker-machine_linux-amd64.zip >machine.zip && \
unzip machine.zip && \
rm machine.zip && \
mv -f docker-machine* /usr/local/bin
Ссылку на актуальную версию можно найти здесь: https://github.com/docker/machine/releases

Корректность установки можно проверить, выполнив команду:
docker-machine version

Работа с Docker Machine

Для создания нового хоста используется команда:
docker-machine create -d vmwarevsphere \
--vmwarevsphere-vcenter="vc01.company.local" \
--vmwarevsphere-username="administrator@vsphere.local" \
--vmwarevsphere-password="P@ssw0rd" \
--vmwarevsphere-datacenter="DC" \
--vmwarevsphere-datastore="datastore" \
--vmwarevsphere-network="VM Network" docker-vm01
, где:
-d vmwarevsphere - указывает тип платформы, на которой создается docker хост;
--vmwarevsphere-vcenter - имя или IP адрес сервера vCenter;
--vmwarevsphere-username - имя учетной записи для подключения;
--vmwarevsphere-password - пароль учетной записи для подключения;
--vmwarevsphere-datacenter - виртуальный ЦОД, в котором будет создан хост;
--vmwarevsphere-datastore - хранилище для размещения ВМ хоста;
--vmwarevsphere-network - сеть, к которой требуется подключить хост;
docker-vm01 - имя ВМ.

Вместо ввода параметров для команды docker-machine create, вы можете предварительно задать переменные окружения, например:
export VSPHERE_CPU_COUNT=2
позволит задать количество виртуальных процессоров для создаваемых ВМ. Список параметров и переменных окружения для vSphere доступен по ссылке: https://docs.docker.com/machine/drivers/vsphere/

Посмотреть список существующих хостов, созданных через Docker Machine, можно с помощью команды:
docker-machine ls
Удалить хост можно с помощью команды:
docker rm <имя_хоста>
Если в процессе создания хоста что-то пошло не так, можно принудительно удалить данный хост:
docker rm -f <имя_хоста>
Вы можете использовать компьютер, на котором установлен Docker Client и Docker Machine, в качестве клиента для управления Docker на хостах. Настройка клиента выполняется через переменные окружения. Для определения значения переменных окружения, выполните команду docker-machine env:
docker-machine env docker-vm01
Переменные окружения можно задать вручную, либо с помощью команды:
eval "$(docker-machine env docker-vm01)"
После этого вы можете работать с демоном Docker на удаленном хосте также, как если бы он был запущен локально.