Docker Machine
Вне зависимости от того, в какой операционной системе вы работаете, начинать работу с Docker необходимо с того, чтобы понимать, с каким Docker Engine вы сейчас работаете и в каком состоянии он находится. Для решения этой задачи и создана Docker Machine.
- Установки и запуска Docker на Mac или Windows
- Установка, настройка и управление множества удаленных Docker хостов
- Установка, настройка и управление Swarm кластерами
Docker Machine — это утилита, которая нужна вам для того, чтобы устанавливать Docker Engine на удаленные физические или виртуальные сервера, а также управлять ими при помощи команды docker-machine. Вы можете использовать Docker Machine для создания Docker хостов на вашем Mac или Windows ПК, в корпоративной сети вашей компании, в вашем датацентре или в различных Облаках, например, в K2 Cloud, AWS или Digital Ocean.
Используя команды docker-machine, вы можете запустить, проверить, остановить, перезапустить управляемый ей хост, обновить клиент и демон Docker, а также настроить клиент Docker на работу с удаленным хостом.
Почему я должен использовать Docker Machine?
Docker Machine позволяет вам легко устанавливать, настраивать и управлять множеством Docker хостов, каждый из которых может работать на различном Linux дистрибутиве.
Более того, Docker Machine позволяет вам запускать Docker на старых Mac или Windows системах.
У Docker Machine есть два основных сценария использования.
- У меня есть устаревший ПК, и я хочу иметь возможность запустить Docker на Mac или Windows
Если вы работаете на устаревшем Mac или Windows ноутбуке или рабочей станции, которые не удовлетворяют последним требованиям Docker для Mac или Docker для Windows, значит, вам необходима Docker Machine, чтобы все таки «запустить Docker» (имеется в виду, Docker Engine) у себя локально. Во время такой установки Docker Machine на ваш Mac или Windows при помощи Docker Toolbox, на самом деле у вас на ПК устанавливается локальная виртуальная машина, внутри которой и будет работать Docker Engine. Docker Machine в данном случае даст вам возможность настроить подключение клиента Docker (команда docker) к Docker Engine в этой виртуальной машине.
- Я хочу установить Docker на удаленные виртуальные машины или физические серверы
Docker Engine — это нативное приложение для Linux систем. Если у вас Linux в качестве основной системы и вам нужно иметь возможность запускать команду docker, все что вам нужно сделать — это скачать и установить Docker Engine. Тем не менее, если вам нужен эффективный способ работать с множеством Docker хостов в сети, в Облаке или же локально, вам нужна Docker Machine.
Вне зависимости от того, используете ли вы Mac, Windows или Linux, вы можете установить Docker Machine и использовать команду docker-machine для подготовки и управления большим количеством Docker хостов. Она автоматически устанавливает на хост Docker, т.е. устанавливает Docker Engine, затем помогает настроить и клиент docker.
Какова разница между Docker Engine и Docker Machine?
Когда говорят «Docker», обычно имеют в виду Docker Engine, т.е. клиент-серверное программное обеспечение, состоящее из демона Docker, REST API, который определяет интерфейсы взаимодействия с демоном и клиентский консольный командный интерфейс, т.е. клиента docker, который общается с демоном при помощи обертки над REST API. Docker Engine принимает команды docker, такие как docker run <image> для запуска контейнера из образа, docker ps для отображения запущенных контейнеров, docker images для отображения доступных образов и т.д.
Docker Machine — это утилита для подготовки и управления вашими докеризированными хостами (имеются в виду хосты с установленным на них Docker Engine). Обычно Docker Machine устанавливается на вашу локальную систему. У Docker Machine есть свой консольный клиент docker-machine так же, как клиент для Docker Engine — docker. Вы можете использовать Docker Machine для установки Docker Engine на один или более виртуальных серверов. Эти виртуальные серверы могут быть локальными или удаленными. Докеризированные хосты при этом называются управляемыми машинами («machines»).
Замечание: для того, чтобы Docker Machine могла подготовить Docker хост, этот Docker хост должен иметь подключение к интернет.
Использование Docker Machine
После установки Docker Machine посмотреть на список управляемых ей Docker хостов можно командой:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Stopped Unknown
Я использую Mac и в качестве Docker хоста у меня используется виртуальная машина, управляемая VirtualBox. Как видно из примера, эта виртуальная машина называется default и в настоящий момент она остановлена. Чтобы запустить эту виртуальную машину и иметь возможность использовать ее в качестве Docker хоста, нужно выполнить команду:
$ docker-machine start default
Starting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Machine "default" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
Docker хост успешно запущен. Проверим этот факт:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v1.12.4
Звездочка (*) показывает, что данный Docker хост в настоящий момент активен, т.е. при запуске утилиты docker, все ее команды будут выполняться на этом хосте. Если звездочка в выводе отсутствует, то необходимо настроить переменные окружения для корректной работы клиента Docker. Посмотреть переменные окружения для работы с Docker хостом default можно командой:
$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/amaksimov/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)
Эта команда сама подсказывает, как применить эти переменные в вашем окружении, чтобы настроить клиента:
$ eval $(docker-machine env default)
После выполнения данной команды, клиент docker будет настроен на работу с Docker хостом default.
Помимо подготовки и настройки Docker хоста Docker Machine может осуществлять к нему ssh подключение:
$ docker-machine ssh default
Boot2Docker version 1.12.4, build HEAD : d0b8fd8 - Tue Dec 13 18:21:26 UTC 2016
Docker version 1.12.4, build 1564f02
docker@default:~$
При помощи плагинов Docker Machine при помощи команды docker-machine create может сразу запускать виртуальные серверы в Облаке.