Как я могу определить, установлен ли Docker для Mac?
У меня есть несколько make-файлов, где большинство вещей должно работать без конфигурации. Эти make-файлы использовали докер-машину в прошлом.
Есть ли возможность обнаружить в bash, использует ли пользователь docker для mac вместо docker-machine?
6 ответов
Лучший способ - проверить наличие переменных окружения DOCKER:
- DOCKER_HOST
- DOCKER_MACHINE_NAME
- DOCKER_TLS_VERIFY
- DOCKER_CERT_PATH
Все четыре из них установлены, когда eval $(docker-machine env)
запускается и требуется для использования с докер-машиной.
Бета-версия не требует установки какого-либо из них и фактически требует, чтобы вы сбросили их, чтобы они функционировали должным образом.
Вы также можете сделать проверку в docker info
команда ищет "moby" (название докера для mac VM):
docker info | grep -q moby && echo "Docker for mac beta" || echo "Not docker for mac beta"
Это будет зависеть от последовательности в docker info
результаты, однако.
Самый чистый способ, который я нашел до сих пор:
[[ $(docker version --format "{{.Server.KernelVersion}}") == *-moby ]]
Вы можете открыть терминал и просто ввести
docker info
и он предоставит вам подробную информацию о докере, если он установлен на вашем Mac.
Если это говорит
command not found : docker
тогда это означает, что на вашем Mac не установлен докер.
Эти make-файлы использовали
docker-machine
в прошлом.
Если возможно, прекратите использование Machine. В последних инструкциях по установке Docker для Mac упоминается Docker Toolbox, но сейчас предлагается устаревшая версия. Вместо этого рассмотрите возможность рефакторинга ваших скриптов, чтобы проверить наличие Docker Desktop:
if [[ -n "$(docker info --format '{{.OperatingSystem}}' | grep 'Docker Desktop')" ]]; then
echo "Docker Desktop found. Skipping installation ..."
else
echo "WARNING! Docker Desktop not installed:"
echo " * Install docker desktop from <https://docs.docker.com/docker-for-mac/install/>"
fi
Объяснение
--format '{{.OperatingSystem}}'
это шаблон Go, который запрашивает изdocker info
.grep 'Docker Desktop'
это то, что вам следует искать, если вы используете Docker Desktop.-z
возвращает истину, если длина строки равна 0 (отman bash
).$(...)
подстановка команд, которая выполняетgrep
без вывода наstdout
.
Совет Joe Alamo за его ответ, который четко фильтрует выводdocker info
. И если вы проведете рефакторинг, чтобы прекратить использование Machine, вы можете рассмотреть возможность удаления VirtualBox из настройки вашей среды и использовать прирост производительности xhyve
- входит в комплект поставки Desktop.
Вы можете сделать следующее:
docker info --format "{{.OperatingSystem}}" | grep -q "Docker for Mac"
Проверьте код выхода через:
if [[ $? -eq 0 ]]; then
echo "Docker for Mac!"
else
echo "Something else"
fi
Проверьте версию, установлена она или нет. Таким образом вы узнаете, установлен ли он на вашем компьютере или нет. Введите это в свой терминал.
docker --version