До версии 18.09 для подключения к docker на другом хосте нужно было использовать отдельную утилиту docker-machine.
С версии 18.09 появилась возможность подключения docker клиента к docker серверу через SSH соединение, кроме того,
появился механизм Docker Context, который упрощает удаленное управление несколькими окружениями - это могут быть
как отдельные docker ноды, так и кластеры Kubernetes или Docker Swarm.
Для подключения теперь достаточно передать в переменной DOCKER_HOST домен или IP адрес, и все команды клиента docker будут
выполняться на указанном хосте.
Рассмотрим подключение к удаленному на примере Ubuntu 20.04.
1. Устанавливаем на локальный компьютер пакет Docker CE.
Официальный сайт с пакетами для Linux, Mac, Win:
https://docs.docker.com/engine/install/
2. Устанавливаем виртуальный сервер из Heat шаблона 'Ubuntu 20.04 + Docker CE', здесь мы и будем запускать контейнеры.
3. На локальном хосте указываем IP адрес установленного сервера.
mylocalhost:~$ export DOCKER_HOST="ssh://ubuntu@10.20.2.9"
Примечание: Если вы используете VPN соединение к виртуальному датацентру, укажите IP адрес локальной сети.
В другом случае добавьте хосту с docker сервером
внешний IP адрес и
сконфигурируйте правила сетевого фильтра.
4. Проверяем подключение и запускаем тестовый контейнер
mylocalhost:~$ docker info
Client:
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.1
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
...
Kernel Version: 5.4.0-33-generic
Operating System: Ubuntu 20.04 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 981.2MiB
Name: docker-0-dd15
...
mylocalhost:~$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:1a523af650137b8accdaed439c17d684df61ee4d74feac151b5b337bd29e7eec
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
Готово, теперь вы можете запускать docker контейнеры на удаленном хосте.
Для постоянного подключения docker к удаленному хосту можно добавить переменную DOCKER_HOST в ~/.bashrc:
mylocalhost:~$ cat >> ~/.bashrc <<EOF
export DOCKER_HOST="ssh://ubuntu@10.20.2.9"
EOF