Многие изображения будут задокументированы для какой ОС они предназначены для docker хаба или в своей документации. Например, mcr.microsoft.com/mssql/server
цели Linux, поэтому вам необходимо запустить среду Linux Containers (перейдите к разделу «Полный список тегов»).
Подробнее Программное c решение: вы можете просматривать изображения, чтобы узнать о них больше из вашей оболочки, если вы ранее их извлекли. Например, если я проверяю образ IIS, например mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019
, мы видим, что он построен для Windows на процессорах amd64.
Вы можете проверить изображение с помощью docker image inspect
из командной строки.
docker image inspect mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019
Результатом будет большой json шарик, описывающий проверенные вами изображения:
[
{
...I've left out a lot of other details here
"Architecture": "amd64",
"OS": "windows",
"OsVersion": "10.0.17763.973",
...
}
]
Для ответа о том, какие типы контейнеров вы должны запускать, вам нужно посмотреть значение «OS» - в моем примере это «windows», поэтому нам потребуется поддержка Windows Containers и возникнет ошибка, если мы попытаемся развернуть контейнер в среде linux.
To упростите эту команду и избавьте вас от необходимости копаться в файле json, в который вы можете включить --format
flag . Например:
docker image inspect mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019 --format='{{json .Os}}'
В моем примере я также включил "OSVersion", это особенно важно при рассмотрении совместимости контейнеров Windows с версией хоста Windows. Вы можете узнать больше о Windows Совместимость контейнеров в документации. Это значение менее важно для контейнеров на основе linux и может присутствовать не на всех изображениях.