Установка docker machine в Unix/Linux
Docker Machine — это инструмент, который позволяет устанавливать Docker Engine на виртуальные хосты и управлять хостами с помощью docker-machine команд. Вы можете использовать Machine для создания Docker нод на локальном компьютере Mac/Linux, а так же в сети вашей компании или в облачных провайдерах (Azure, AWS или Digital Ocean). Используя команды, вы можете запускать, останавливать, перезапускать или проверять управляемый узел, а так же, слегкостью обновлять клиент и Docker демон или настраивать Docker клиент для взаимодействия с вашим хостом.
Для чего используется docker-machine?
1. Docker-machine используется для установки и запуска docker на Linux/Mac OS.
2.Docker-machine используется для провиженинга и управление несколькими удаленными Docker хостами прям с локальной машины.
3. Docker-machine используется для провиженинга Swarm кластера (docker-swarm).
Какие отличия docker-engine и docker-machine?
Когда люди говорят «docker», они обычно подразумевают Docker Engine — это клиент-серверное приложение, состоящее из Docker демона, REST API, который указывает интерфейсы для взаимодействия демона и клиентского интерфейса командной строки (CLI), который «общается» с демоном (через обертку API REST).
Docker Engine принимает docker команды от CLI ( Например: docker run your_image, docker ps и т.д и т.п).
Docker Machine — это инструмент для обеспечения и управления вашими Dockerized хостами (хосты с Docker Engine на них). Как правило, вы устанавливаете Docker Machine в свою локальную систему в дополнение к docker. Docker Machine имеет собственную клиентскую docker-machine для командной строки, а так же клиент Docker Engine и сам docker. Вы можете использовать данную утилиту для установки Docker Engine на одну или несколько виртуальных систем.
Эти виртуальные системы могут быть локальными (например, когда вы используете «docker-machine» для установки и запуска Docker Engine в VirtualBox на Mac или Linux) или удаленно (например, когда вы используете «docker-machine» для обеспечения докеретизированных хостов на облачных провайдерах). Докерезированные хосты могут иногда называются управляемыми «machines» — т.к машинами.
Первое что необходимо сделать, — это установить сам docker. Я уже приводил примеры по установке данного ПО:
Установка Docker на CentOS/RedHat/Fedora
Установка Docker на Debian/Ubuntu
Вот еще полезное чтиво:
Остановить/Удалить все Docker контейнеры/images
Создание docker контейнера в Unix/Linux
Работа с docker + docker-compose в Unix/Linux
Создание docker с nginx + lua на CentOS7
Установка docker-compose в Unix/Linux
Запуск docker контейнеров в Unix/Linux
И так, переходим к установке docker-machine. Установка не очень сложная.
Установка docker machine в Linux
Очень простая установка, стоит выполнить:
$ curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` > /tmp/docker-machine
Выставляем право на выполнение:
# chmod +x /tmp/docker-machine
И после чего, копируем:
# cp /tmp/docker-machine /usr/local/bin/docker-machine
И переходим к использованию.
Установка docker machine в Mac OS X
Имеется несколько способов как можно утановить докер машину на мак ОС.
-=== СПОСОБ 1 — Использование официального сайта ===-
Выполняем скачивание данного файла:
$ curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine
Выставляем право на выполнение:
# chmod +x /usr/local/bin/docker-machine
-=== СПОСОБ 2 — Использование не официальный источник, homebrew ===-
Так же, можно выполнить установку через homebrew, но для начала — поставим его! Я описывал процесс установки данного ПО, по этмоу можно с ним ознакомится тут:
Установка homebrew на Mac OS X
После чего, выполняем поиск тулзы:
$ brew search docker-machine
И после чего, можно ее поставить:
$ brew install docker-machine
И переходим к использованию.
Использование docker machine в Unix/Linux
Проверим версию докер машины:
$ docker-machine version
Для удаления, используйте:
# rm $(which docker-machine)
Я docker-machine использую для деплоя своих контейнеров в облака.
Использование docker machine для деплоя в AWS
И по этому, я хотел бы привести пример такого деплоя, на примере AWS.
У меня взят пример с Создание docker с nginx + lua на CentOS7 статьи, и по этому — я создам деплой.
Создаем машину следующим образом:
$ docker-machine create --driver amazonec2 --amazonec2-access-key XXXXXXXX --amazonec2-secret-key YYYYYYY --amazonec2-region us-east-1 --amazonec2-open-port 80 --amazonec2-open-port 443 --amazonec2-vpc-id vpc-3cdc1145 nginx-lua-version2.0 Running pre-create checks... Creating machine... (nginx-lua-version2.0) Launching instance... Waiting for machine to be running, this may take a few minutes... Detecting operating system of created instance... Waiting for SSH to be available... Detecting the provisioner... Provisioning with ubuntu(systemd)... Installing Docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env nginx-lua-version2.0
Где:
- —driver amazonec2 — Указываем драйвер, данном случае, — это драйвер для деплоя машин в AWS.
- —amazonec2-access-key XXXXXXXX — Прописываем AWS access ключ.
- —amazonec2-secret-key YYYYYYY — Прописываем AWS secret ключ.
- —amazonec2-region us-east-1 — Задаем регион для деплоя машинки.
- —amazonec2-open-port 80 — Открываем порт.
—amazonec2-open-port 443 - —amazonec2-vpc-id vpc-3cdc1145 — Задаем используюшую VPC (т.е сеть).
- nginx-lua-version2.0 — Название будущей машины.
Чтобы не задавать AWS access и AWS secret ключи, можно прописать:
# vim ~/.aws/credentials
И прописать:
[default] aws_access_key_id = XXXXXXX aws_secret_access_key = YYYYYYY
Так же, можно сделать экспорт переменных, например:
$ export AWS_ACCESS_KEY_ID=XXXXXXXXX $ export AWS_SECRET_ACCESS_KEY=YYYYYYYY $ docker-machine create --driver amazonec2 my_aws_machine_1
Я не буду приводить все возможные переменные для создания машинки (на данном этапе).
Можно посмотреть какие машинки имеются:
$ docker-machine ls
Подключаемся к созданной машинке:
$ docker-machine ssh nginx-lua-version2.0 Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-1020-aws x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 132 packages can be updated. 54 updates are security updates. ubuntu@nginx-lua-version2:~$
Как видно с вывода, у меня все развернулось и работает как нужно!
Для удаления машины, выполните:
$ docker-machine rm -f nginx-lua-version2.0
Все — просто!
Использование docker machine для деплоя в VirtualBox
Для тестов, я создам машну следующей командой:
$ docker-machine create --driver virtualbox virtualbox-machine
Вывод:
Running pre-create checks... (virtualbox-machine) Default Boot2Docker ISO is out-of-date, downloading the latest release... (virtualbox-machine) Latest release for github.com/boot2docker/boot2docker is v17.09.1-ce (virtualbox-machine) Downloading /Users/captain/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v17.09.1-ce/boot2docker.iso... (virtualbox-machine) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100% Creating machine... (virtualbox-machine) Copying /Users/captain/.docker/machine/cache/boot2docker.iso to /Users/captain/.docker/machine/machines/virtualbox-machine/boot2docker.iso... (virtualbox-machine) Creating VirtualBox VM... (virtualbox-machine) Creating SSH key... (virtualbox-machine) Starting the VM... (virtualbox-machine) Check network to re-create if needed... (virtualbox-machine) Waiting for an IP... Waiting for machine to be running, this may take a few minutes... Detecting operating system of created instance... Waiting for SSH to be available... Detecting the provisioner... Provisioning with boot2docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env virtualbox-machine
Смотрим какие контейнеры имеются:
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS dev - virtualbox Stopped Unknown virtualbox-machine * virtualbox Running tcp://192.168.99.100:2376 v17.09.1-ce
Для получения списка переменных для машины, используйте:
$ docker-machine env virtualbox-machine export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="/Users/captain/.docker/machine/machines/virtualbox-machine" export DOCKER_MACHINE_NAME="virtualbox-machine" # Run this command to configure your shell: # eval $(docker-machine env virtualbox-machine)
Подключаем ваш shell в созданную машину:
$ eval $(docker-machine env virtualbox-machine)
Для подключения к докер-машине, используйте:
$ docker-machine ssh virtualbox-machine ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| Boot2Docker version 17.09.1-ce, build HEAD : e7de9ae - Fri Dec 8 19:41:36 UTC 2017 Docker version 17.09.1-ce, build 19e2cf6 docker@virtualbox-machine:~$
Как-то так!
Использование docker machine для деплоя в Google Cloud
Не было необходимости еще. Думаю что я дополню статью, но попозже!
Использование docker machine для деплоя в Digital Ocean
Не было необходимости еще. Думаю что я дополню статью, но попозже!
Вот и все, статья «Установка docker machine в Unix/Linux» завершена.