Если вы хотите развернуть на удаленном хосте Docker с вашего локального хоста, есть несколько вариантов.
Вы можете настроить удаленного демона Docker на прием TCP-соединений, прошедших аутентификацию в оба направления с использованием SSL-сертификатов. Вероятно, это рекомендуемый способ настройки удаленного доступа, поскольку он изначально поддерживается клиентом Docker. Подробнее об этом можно прочитать в Docker ' Protect Docker daemon socket"документации.
Второй вариант - перенаправить сокет Docker с удаленного хоста. на локальный хост через ssh
туннель. Если вы ssh
подключитесь к удаленному хосту следующим образом ...
ssh -L /tmp/docker.sock:/var/run/docker.sock me@remotehost
... тогда вы сможете получить доступ к удаленному демону Docker, используя сокет /tmp/docker.sock
на локальном хосте. Вам необходимо установить переменную окружения DOCKER_HOST
следующим образом:
export DOCKER_HOST=unix:///tmp/docker.sock
docker-compose
также распознает переменную окружения DOCKER_HOST
.
Конечно, это работает только долго как вы подключены к удаленному хосту.
Например:
bash-5.0$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
bash-5.0$ ssh -nN -L /tmp/docker.sock:/var/run/docker.sock docker.local &
[1] 1363146
bash-5.0$ export DOCKER_HOST=unix:///tmp/docker.sock
bash-5.0$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10924fc5f455 registry:2 "/entrypoint.sh /etc…" 2 weeks ago Up 19 hours 0.0.0.0:5000->5000/tcp registry
(Здесь я поместил свое ssh
соединение в фоновом режиме, чтобы я мог продолжать работать на моем локальном хосте. Конечно, вы можете просто использовать второй терминал для подключения ssh
.