Установка docker machine в Unix/Linux

Установка 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 Engine

Работа Docker Engine

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-machine

Работа Docker-machine

Первое что необходимо сделать, — это установить сам 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» завершена.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *