Запись образа в окружение для определенной платформы
На этом этапе мы рассмотрим, как Docker обрабатывает образы для различных платформ и как можно взаимодействовать с ними. Хотя явно "записать" образ в окружение для определенной платформы не является стандартной командой Docker, как вы могли бы предположить. Docker-образы часто являются многоархитектурными, то есть один тег образа может содержать варианты для разных архитектур процессоров (например, amd64
, arm64
и т.д.). Когда вы загружаете образ, Docker автоматически выбирает правильный вариант для архитектуры вашей системы.
Концепция "записи" образа в окружение для определенной платформы больше связана с обеспечением доступности или использования правильного варианта образа. Хотя вы не явно "записываете" его, вы можете загружать образы, указывая целевую платформу.
Демонстрируем загрузку образа для определенной платформы. Мы загрузим образ alpine
, который представляет собой легковесное дистрибутив Linux, и укажем платформу arm64
. Несмотря на то, что наша виртуальная машина LabEx, вероятно, имеет архитектуру amd64
, Docker все еще может загружать и хранить образы для других архитектур.
Сначала загрузим образ alpine
без указания платформы, чтобы увидеть поведение по умолчанию.
docker pull alpine
Вы должны увидеть вывод, указывающий на то, что образ загружается.
Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
Теперь перечислим образы еще раз, чтобы увидеть образ alpine
.
docker images
Вы увидите alpine
в списке.
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ago ...kB
alpine latest ... ... ago ...MB
Теперь попробуем загрузить образ alpine
специально для платформы arm64
, используя флаг --platform
.
docker pull --platform arm64 alpine
Вы увидите вывод, указывающий на то, что загружается вариант для arm64
.
Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
Несмотря на то, что вывод может выглядеть похожим, Docker загрузил вариант для arm64
. Если бы вы находились на машине с архитектурой arm64
, это был бы вариант по умолчанию. На машине с архитектурой amd64
у вас теперь локально хранятся как вариант amd64
(загруженный по умолчанию), так и вариант arm64
образа alpine:latest
.
Хотя по умолчанию команда docker images
не явно показывает платформу каждого перечисленного варианта образа, Docker управляет ими внутренне. Когда вы запускаете контейнер, Docker будет использовать соответствующий вариант образа для архитектуры хоста.
На этом этапе показано, как Docker обрабатывает многоархитектурные образы и как можно явно загрузить образ для другой платформы, используя флаг --platform
.