특정 플랫폼용 환경에 이미지 기록
이 단계에서는 Docker 가 서로 다른 플랫폼에 대한 이미지를 처리하는 방법과 상호 작용하는 방법을 살펴보겠습니다. 하지만 특정 플랫폼에 대한 이미지를 환경에 명시적으로 "기록"하는 것은 생각하는 방식의 표준 Docker 명령이 아닙니다. Docker 이미지는 종종 다중 아키텍처 (multi-architecture) 를 가지며, 이는 단일 이미지 태그가 서로 다른 CPU 아키텍처 (예: amd64, arm64 등) 에 대한 변형을 포함할 수 있음을 의미합니다. 이미지를 가져올 때 Docker 는 시스템 아키텍처에 맞는 올바른 변형을 자동으로 선택합니다.
특정 플랫폼에 대한 이미지를 환경에 "기록"하는 개념은 올바른 이미지 변형이 사용 가능하거나 사용되도록 하는 것과 더 관련이 있습니다. 명시적으로 "기록"하지는 않지만, 대상 플랫폼을 지정하여 이미지를 가져올 수 있습니다.
특정 플랫폼에 대한 이미지를 가져오는 것을 시연해 보겠습니다. 가벼운 Linux 배포판인 alpine 이미지를 가져와 arm64 플랫폼을 지정합니다. LabEx VM 이 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
이제 --platform 플래그를 사용하여 arm64 플랫폼용으로 alpine 이미지를 가져와 보겠습니다.
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 머신에서는 이제 alpine:latest 이미지의 amd64(기본 가져오기) 및 arm64 변형을 모두 로컬에 저장하게 됩니다.
docker images는 기본적으로 나열된 각 이미지 변형의 플랫폼을 명시적으로 표시하지 않지만, Docker 는 내부적으로 이를 관리합니다. 컨테이너를 실행하면 Docker 는 호스트의 아키텍처에 적합한 이미지 변형을 사용합니다.
이 단계에서는 Docker 가 다중 아키텍처 이미지를 처리하는 방법과 --platform 플래그를 사용하여 다른 플랫폼에 대한 이미지를 명시적으로 가져오는 방법을 보여줍니다.