При использовании плагина Maven docker-maven-plugin и использовании Docker Desktop выходит ошибка:
1 |
[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.43.4:build (Build docker image) on project mysuperproject: Execution Build docker image of goal io.fabric8:docker-maven-plugin:0.43.4:build failed: No <dockerHost> given, no DOCKER_HOST environment variable, no read/writable '/var/run/docker.sock' or '//./pipe/docker_engine' and no external provider like Docker machine configured -> [Help 1] |
Причем раньше, когда я просто использовал Docker, а не Docker Desktop, всё прекрасно работало. Что же произошло? Зачем ему нужен DOCKER_HOST?
На самом деле причина в самом плагине docker-maven-plugin. Docker Desktop создаёт отдельный контекст.
Посмотрите список builder-ов в Docker Desktop:
Как видите, здесь указан desktop-linux, который запущен, а также есть default, который недоступен.
Попробуйте посмотреть список контекстов:
1 2 3 4 |
fedor@fedor-pc:~$ docker context ls NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR default moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock desktop-linux * moby Docker Desktop unix:///home/fedor/.docker/desktop/docker.sock |
Здесь тоже указано два контекста. Причём у активного docker-linux указан docker endpoint unix:///home/fedor/.docker/desktop/docker.sock. А у стандартного контекста default указан unix:///var/run/docker.sock , его по умолчанию и использует docker-maven-plugin согласно документации. А у нас другой контекст с другим адресом. Вот его нам и нужно указать в качестве DOCKER_HOST:
1 |
fedor@fedor-pc:~$ export DOCKER_HOST=unix:///home/fedor/.docker/desktop/docker.sock |
После этого запустите задачу docker-maven-plugin-а ещё раз, теперь она должна пройти успешно.