- Управление удалёнными хостами Docker с помощью Docker Machine в Ubuntu 18.04
- Требования
- 1: Установка Docker Machine
- 2: Установка сценариев Docker Machine
- 3: Команды Docker Machine
- 4: Выполнение команд на хосте Docker через SSH
- 5: Включение хоста Docker
- 6: Создание контейнера Docker на удалённом хосте
- 7: Удаление хостов Docker
- 8: Отключение отчетов о сбоях (опционально)
- Заключение
- Install Docker Machine
- Installing Machine Directly
- Installing bash completion scripts
- Where to go next
Управление удалёнными хостами Docker с помощью Docker Machine в Ubuntu 18.04
Docker Machine – это инструмент, позволяющий управлять удалёнными хостами Docker и выполнять их оркестровку с локального компьютера.
Docker Machine можно установить на локальную или на удалённую систему. Как правило, эту программу используют на локальной машине.
Docker Machine можно установить на большинство дистрибутивов Linux, на Mac OS X и Windows. Данное руководство поможет установить этот инструмент на локальную машину Ubuntu 18.04.
Требования
- Локальная машина Ubuntu 18.04.
- Предварительно установленная система Docker (инструкции по установке можно найти здесь).
1: Установка Docker Machine
Для начала установите Docker Machine на локальную машину.
Чтобы загрузить и установить бинарный файл, введите:
wget https://github.com/docker/machine/releases/download/v0.15.0/docker-machine-$(uname -s)-$(uname -m)
Файл называется docker-machine-Linux-x86_64. После загрузки переименуйте его в docker-machine, так будет проще работать.
mv docker-machine-Linux-x86_64 docker-machine
Сделайте файл исполняемым:
Переместите или скопируйте его в каталог usr/local/bin, чтобы получить доступ к системной команде:
sudo mv docker-machine /usr/local/bin
Чтобы убедиться, что установка прошла успешно, запросите версию программы:
docker-machine version 0.15.0, build b48dc28d
2: Установка сценариев Docker Machine
В GitHub-репозитории Docker Machine можно найти три bash-сценария, которые упрощают работу команд docker и docker-machine. Они отвечают за выполнение команд и пользовательские настройки командной строки.
Установите эти сценарии на локальный компьютер в каталог /etc/bash_completion.d.
Примечание: Перед загрузкой и общесистемной установкой сценария из Интернета необходимо сначала проверить его содержимое, просмотрев исходный URL-адрес в браузере.
Первый сценарий позволяет увидеть статус машины в командной строке. Это полезно, если при работе вы часто переключаетесь между несколькими машинами Docker. Этот сценарий называется docker-machine-prompt.bash. Чтобы установить его, введите:
sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-prompt.bash -O /etc/bash_completion.d/docker-machine-prompt.bash
Чтобы завершить установку этого файла, нужно установить пользовательское значение переменной PS1 в файле .bashrc. PS1 – это специальная переменная оболочки, которая используется для редактирования командной строки bash. Откройте файл:
Этот файл содержит три строки, которые начинаются с PS1:
В конец каждой строки нужно вставить $(__docker_machine_ps1 ” [%s]”). Должно получиться следующее:
Сохраните и закройте файл.
Второй сценарий называется docker-machine-wrapper.bash. Он добавляет к команде docker-machine подкоманду use, которая позволяет быстро переключаться между машинами Docker. Чтобы загрузить этот сценарий, наберите:
sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-wrapper.bash -O /etc/bash_completion.d/docker-machine-wrapper.bash
Последний сценарий называется docker-machine.bash. Он отвечает за завершение команд docker-machine.
sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine.bash -O /etc/bash_completion.d/docker-machine.bash
Чтобы активировать внесённые изменения, закройте и снова откройте терминал. Если вы находитесь в сессии SSH, закройте и снова откройте сессию. Теперь завершение команд docker и docker-machine включено.
3: Команды Docker Machine
Для создания нового хоста используется команда:
docker-machine create -d 8host \
Параметр –d задаёт драйвер.
При помощи субкоманды ls можно просмотреть список доступных хостов:
Команда вернёт список хостов (в списке указывается имя хоста, его состояние, URL-адрес и другие данные о хосте).
Чтобы получить подробную информацию о хосте Docker, используйте подкоманду inspect:
docker-machine inspect machine-name
Команда вернёт следующий результат. В строке Image указан текущий дистрибутив Linux:
.
«ConfigVersion»: 3,
«Driver»: «IPAddress»: «203.0.113.71»,
«MachineName»: «docker-01»,
«SSHUser»: «root»,
«SSHPort»: 22,
.
«Image»: «ubuntu-16-04-x64»,
«Size»: «s-1vcpu-1gb»,
.
>,
—
Чтобы вывести на экран настройки соединения хоста, введите:
docker-machine config docker-01
—tlsverify
—tlscacert=»/home/kamit/.docker/machine/certs/ca.pem»
—tlscert=»/home/kamit/.docker/machine/certs/cert.pem»
—tlskey=»/home/kamit/.docker/machine/certs/key.pem»
-H=tcp://203.0.113.71:2376
Последняя строка результата данной команды отображает IP-адрес хоста. Также узнать IP можно с помощью следующей команды:
docker-machine ip docker-01
Чтобы отключить удалённый хост, используйте:
docker-machine stop docker-01
Чтобы убедиться, что удалённый хост был отключен, запросите список доступных хостов:
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
docker-01 — 8host Stopped Unknown
Чтобы запустить удалённый хост, введите:
docker-machine start docker-01
Проверить его состояние можно в списке доступных хостов:
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
docker-01 — 8host Running tcp://203.0.113.71:2376 v18.06.1-ce
4: Выполнение команд на хосте Docker через SSH
На данный момент у вас есть все необходимые данные о хосте. Однако Docker предоставляет гораздо больше возможностей. К примеру, вы можете выполнять на хосте Docker встроенные команды Linux. Это делается с помощью подкоманды ssh в локальной системе.
Данный раздел научит вас пользоваться этой подкомандой и запускать сессии SSH на хостах Docker.
Если на удалённом хосте используется операционная система Ubuntu, выполните в локальной системе следующую команду, чтобы обновить пакеты системы удалённого хоста.
docker-machine ssh docker-01 apt-get update
Вы можете внедрить доступные обновления с помощью команды:
docker-machine ssh docker-01 apt-get upgrade
Чтобы узнать, какое ядро использует удалённый хост, введите:
docker-machine ssh docker-01 uname -r
Также команда ssh позволяет выполнить авторизацию на удаленном хосте Docker:
docker-machine ssh docker-01
После этого командная строка должна измениться, и вы увидите:
Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-131-generic 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
14 packages can be updated.
10 updates are security updates.
Чтобы закрыть удалённый хост, введите:
5: Включение хоста Docker
После активации хост Docker подключается к локальному клиенту Docker, что позволяет запускать встроенные команды в удалённой системе. Чтобы включить хост, используйте команду:
eval $(docker-machine env machine-name)
docker-machine use machine-name
Примечание: При работе с большим количеством хостов Docker для переключения между хостами рекомендуется использовать команду docker-machine use.
После этого командная строка должна измениться. Это значит, что локальный клиент Docker подключен к удалённому хосту Docker.
В конце строки указывается имя текущего хоста.
Теперь можно выполнять команды docker на удалённом хосте.
Чтобы убедиться, что хост включен, запустите команду docker-machine ls.
Если хост активен, в столбце ACTIVE будет символ звёздочки (*).
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
docker-01 * 8host Running tcp://203.0.113.71:2376 v18.06.1-ce
Примечание: Когда хост включен, все команды docker выполняются на удалённом хосте, а все команды Linux – на локальной машине.
Чтобы закрыть хост, введите:
Эта команда вернёт вас в командную строку локальной системы.
6: Создание контейнера Docker на удалённом хосте
Попробуйте запустить контейнер на удаленном хосте Docker.
Примечание: В качестве примера в руководстве используется официальный контейнер Nginx.
Чтобы выбрать удаленную машину, введите:
docker-machine use docker-01
Подключившись к удалённому хосту, выполните следующую команду, чтобы запустить контейнер Nginx:
docker run -d -p 8080:80 —name httpserver nginx
Данная команда свяжет порт 80 контейнера Nginx и порт 8080 хоста Docker. Теперь вы можете получить доступ к стандартной странице Nginx.
Если команда выполнена успешно, вы увидите эту страницу в браузере, перейдя по ссылке:
Пока хост Docker активен (как видно по командной строке), вы можете просмотреть образы:
В выводе будет образ Nginx:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 71c43202b8ac 3 hours ago 109MB
Вы также можете просмотреть список активных или запущенных контейнеров на хосте:
Если контейнер Nginx, который вы запустили только что, – единственный активный контейнер, вы увидите такой результат:
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
d3064c237372 nginx «nginx -g ‘daemon of…» About a minute ago Up About a minute
0.0.0.0:8080->80/tcp httpserver
Примечание: Чтобы создать контейнер на удалённом хосте, нужно активировать его. В противном случае контейнер будет создан на локальной машине. Определить, какая машина является текущей (удалённая или локальная), можно с помощью командной строки – в ней указывается имя текущей машины.
7: Удаление хостов Docker
Вы можете использовать Docker Machine для удаления хоста Docker, который вы создали. Чтобы удалить хост docker-01, введите:
docker-machine rm docker-01
Сервер удалится вместе с ключом SSH. Снова просмотрите список хостов:
На этот раз вы не увидите хост docker-01 в выводе. Если у вас был только один хост, вы вообще не увидите никакого вывода.
Обязательно выполните команду docker-machine use -u , чтобы вернуть локальный демон Docker на ваш локальный компьютер.
8: Отключение отчетов о сбоях (опционально)
По умолчанию в случае неудачного выполнения команды или сбоя Docker Machine диагностическая информация автоматически передается на аккаунт Docker на Bugsnag. Эту функцию при желании можно отключить. Для этого создайте пустой файл no-error-report в каталоге .docker/machine.
В случае сбоя Docker Machine проверяйте этот файл.
Заключение
Данный мануал содержит только основы работы с Docker Machine. Теперь вы можете создать необходимое количество удалённых хостов Docker и управлять ими.
Более подробную информацию о Docker Machine можно получить в документации программы. Загрузить использованные в мануале сценарии можно с этой страницы GitHub.
Install Docker Machine
On macOS and Windows, Machine is installed along with other Docker products when you install the Docker Toolbox. For details on installing Docker Toolbox, see the macOS installation instructions or Windows installation instructions.
If you want only Docker Machine, you can install the Machine binaries directly by following the instructions in the next section. You can find the latest versions of the binaries are on the docker/machine release page on GitHub.
Installing Machine Directly
- Install the Docker binary.
- Download the Docker Machine binary and extract it to your PATH. If you are running macOS or Linux:
$ curl -L https://github.com/docker/machine/releases/download/v0.8.2/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine && \ chmod +x /usr/local/bin/docker-machine
$ if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \ curl -L https://github.com/docker/machine/releases/download/v0.8.2/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \ chmod +x "$HOME/bin/docker-machine.exe"
$ docker-machine version docker-machine version 0.8.2, build e18a919
Installing bash completion scripts
The Machine repository supplies several bash scripts that add features such as:
- command completion
- a function that displays the active machine in your shell prompt
- a function wrapper that adds a docker-machine use subcommand to switch the active machine
To install the scripts, copy or link them into your /etc/bash_completion.d or /usr/local/etc/bash_completion.d directory. To enable the docker-machine shell prompt, add $(__docker_machine_ps1) to your PS1 setting in ~/.bashrc .
PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
You can find additional documentation in the comments at the top of each script.
Where to go next
- Docker Machine overview
- Create and run a Docker host on your local system using virtualization
- Provision multiple Docker hosts on your cloud provider
- Docker Machine driver reference
- Docker Machine subcommand reference
Feedback? Questions? Suggestions?
Edit this page, file a ticket, or rate this page: