Docker context определяет, куда отправляются команды docker и docker compose. Контекст может быть локальным или удалённым. Удалённый контекст использует подключение по SSH.
Создание и переключение контекстов
Создать удалённый контекст:
docker context create prod --docker "host=ssh://user@server"
Посмотреть доступные контексты:
docker context ls
Переключиться на нужный:
docker context use prod
Где выполняются команды
После переключения любая команда:
docker ps
docker compose up -d
docker compose down
выполняется на удалённом сервере, но файлы из текущей локальной директории не копируются на сервер.
Docker Engine на сервере получает только API-команды, но не получает ваши файлы.
Ограничения при работе с compose
Если в compose-файле есть:
build: .
volumes:
- .:/app
удалённый Docker Engine не сможет найти эти пути, потому что это ваш локальный каталог, который не существует на сервере. Чтобы запуск через context работал, нужно использовать образы:
image: myapp:latest
или заранее скопировать проект на сервер и запускать compose через SSH:
ssh user@server
cd /project
docker compose up -d
Важное про docker compose up --build
Команда, выполненная локально:
docker compose up --build
не передаёт ваш проект на сервер и не пересобирает его там. Для удалённого Docker Engine ваш каталог недоступен.
Вывод
Docker context только указывает, какой Docker Engine обслуживает ваши команды. Он не синхронизирует директории, не копирует файлы, не выбирает проект по имени папки на вашей машине.
LinuxCamp | #docker #devops
