
그 위에 구축된 컨테이너가 있습니다.데비안:제시(일부 openssl 컴파일과 일부 사용자 정의 항목이 있습니다). 내 이미지가 됐으면 좋겠어발사 가능예를 들어 "일반" x86_64 OS뿐만 아니라 RaspberryPI와 같은 ARM 기반 아키텍처와 같은 다양한 아키텍처에서도 마찬가지입니다.
x86_64에서 이미지를 빌드하고 HUB에 게시할 때 ARM 장치에서 끌어올 때 작동하지 않으며 그 반대의 경우도 마찬가지라는 것을 발견했습니다. 그렇게 하면 "일부 라이브러리를 찾을 수 없습니다" 또는 "인식할 수 없는 명령" 오류가 발생합니다.
문제는 다른 아키텍처에서 사용할 수 있도록 이미지를 빌드하고 게시하는 방법입니다. (그리고 중요한 것은 다운로드할 때 Docker에게 적절한 이미지를 자동으로 선택하도록 지시하는 방법입니다.)
나는 그것을 볼 수 있습니다데비안 컨테이너는 다른 아키텍처로 "포팅되었습니다"하지만 내 이미지에 대해 이를 수행하는 방법에 대한 정보를 찾을 수 없습니다.
답변1
Docker의 다중 아키텍처 이미지가 활발히 개발 중입니다. 이것의 핵심 부분은 docker manifest
다음과 같은 cli입니다.이 PR에서는 아직 개발 중입니다..
먼저 적절한 아키텍처 시스템에서 직접 실행할 수 있는 다양한 아키텍처에 대한 이미지를 생성해야 합니다. 멀티 아키텍처 이미지는 이러한 이미지를 가리키는 "매니페스트 목록"입니다. 그런 다음 Docker 클라이언트는 다중 아키텍처 이미지를 가져올 때 해당 목록에서 적절한 이미지를 가져옵니다.
위 PR이 Docker에 통합될 때까지 다음을 사용할 수 있습니다.매니페스트 도구이를 통해 매니페스트 목록을 정의하고 이를 레지스트리 서버에 푸시할 수 있습니다. 이를 통해 아래 예제와 같은 입력 yaml 파일이 허용됩니다.
image: myprivreg:5000/someimage:latest
manifests:
-
image: myprivreg:5000/someimage:ppc64le
platform:
architecture: ppc64le
os: linux
-
image: myprivreg:5000/someimage:amd64
platform:
architecture: amd64
features:
- sse
os: linux
그런 다음 아래를 실행하여 위의 yaml 파일을 가져와 정의된 레지스트리에 푸시되는 매니페스트 목록으로 변환합니다.
./manifest-tool push from-spec someimage.yaml
답변2
- 관련 아키텍처의 이미지를 기준으로 이미지를 구축하세요.
- 예:
arm32v7/debian:jessie
대신에debian:jessie
- 예:
- 다른 것으로 태그를 지정하세요.
- 예:
fracz/fooapp:arm32-latest
,fracz/fooapp:raspi-latest
,fracz/fooapp:grandma-use-this-one
- 예:
- 이미지를 실행하려는 사람은 적절한 태그를 선택할 책임이 있습니다.
- 아마도 문서/readmes/etc에 관련 정보를 넣고 싶을 수도 있습니다.