docker-compose cli игнорирует текущий контекст

#docker #docker-compose

#docker #docker-compose

Вопрос:

Я создал контекст ssh с docker context create помощью command, команда, подобная docker ps -a успешно выполненной на удаленном компьютере, но когда я запускаю docker-compose up команду, контейнеры создаются на локальном компьютере, запустив docker context ls я убедился, что нахожусь в удаленном контексте

Почему docker-compose игнорируется текущий контекст?

Комментарии:

1. Не удается воспроизвести, Docker 20.10.11, compose — 1.29.2. Вы использовали docker context use <new_context_name> для установки нового контекста по умолчанию?

2. Я использую export DOCKER_CONTEXT=<new_context_name>

3. Возможно, compose не читает этот параметр env. Попробуйте с docker context use помощью .

4. К вашему сведению, переменные среды, которые docker-compose делает, читаются: docs.docker.com/compose/reference/envvars

5. @anemyte как я могу использовать docker context use безопасным способом, я хочу убедиться, что после запуска команды я переключился на контекст по умолчанию, может быть, я забыл запустить docker context use default

Ответ №1:

Чтобы активировать контекст для docker-compose , используйте:

 docker context use CONTEXT_NAME
 

Но это изменит контекст по умолчанию, и он не изменится обратно, если вы не запустите команду снова с default именем контекста. Если это должно быть временное переключение контекста, вы можете запустить docker-compose с -c флагом:

 docker-compose -c CONTEXT_NAME up
 

И есть также альтернативный способ вообще без использования контекста. docker-compose считывает ряд параметров из среды и .env файла (в вашем текущем каталоге). Вы можете добавить туда DOCKER_HOST переменную, чтобы изменить хост, на котором docker-compose будут выполняться ваши команды. Например:

 DOCKER_HOST=ssh://example.com
 

или

 DOCKER_HOST=tcp://10.0.42.11:2376
 

Список поддерживаемых переменных среды доступен здесь .