#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
Список поддерживаемых переменных среды доступен здесь .