2017-12-27 1 views
2

github에서 nodejs 앱을 도킹했습니다. 내 Dockerfile은 공식 nodejs 이미지를 기반으로합니다. offical node-repo는 다중 아키텍처 (x86, amd64, arm)를 완벽하게 지원합니다. 즉, 서로 다른 컴퓨터에 정확한 Dockerfile을 빌드하여 각각의 아키텍처에 대해 서로 다른 이미지를 생성 할 수 있습니다.Multi-Arch-Docker 이미지 빌드를 자동화하는 방법

그래서 내 앱에서도 동일한 아키텍처를 원활하게 제공하려고합니다. 그러나 어떻게? 내 목표는 최대한 자동화합니다. docker-manifo를 만들려면 이론 상 필요하다는 것을 알고 있습니다.이 이미지는 도커 - 레포 (docker-repo) 역할을하며 최종 사용자 - 도커 - 클라이언트를 적합한 이미지로 리디렉션합니다.

Docker-Hub 자체는 github repo를 모니터링하고 자동화 된 빌드를 시작할 수 있습니다. Thats는 amd64 이미지를 처리합니다. 그러나 나머지 아키텍처는 어떻습니까? Qemu의 도움을 받아 팔 구축을 처리 할 수있는 'TravisCI'라는 서비스도 있습니다. 그런 다음 두 repos가 manifest-repo에 의해 정적으로 참조 될 수 있다고 생각합니다. 그러나 이것은 여전히 ​​한 두 개의 아키텍처를 충족시키지 못하게 만듭니다.

하지만 여러 앱을 사용하거나 동일한 앱을 구축하는 방법이 잘못되었습니다. 누구든지이 문제에 대한 더 좋고 완전한 해결책을 알고 있습니까? 기본적으로 몇 대의 컴퓨터를 통해 동일한 도커 파일을 실행하고 매니페스트에 기록합니다.

+0

또한 사람들이이 문제를 해결하는 방법에 관심이 있습니다. – Chris

+0

나는 또한이 문제로 어려움을 겪고 있기 때문에 답변을 시도하지 않을 것이며 실제 장치와 cron을 사용하여 끝내게되었습니다. https://blog.slucas.fr/blog/docker-multiarch-manifest-hub-1/을 참조하십시오. – seblucas

답변

0

Docker 18.02 CLI로 시작하여 클라이언트 측 실험 기능을 활성화 한 경우 멀티 아치 매니페스트를 만들어 도커 레지스트리에 푸시 할 수 있습니다. VSTS를 사용하고 빌드 후 다중 아치 태그에 대한 사용자 지정 빌드 작업을 만들 수있었습니다. 나는이 패턴을 따랐다.

보조 노트에
docker manifest create --amend {multi-arch-tag} {os-specific-tag-1} {os-specific-tag-2} 
docker manifest annotate {multi-arch-tag} {os-specific-tag-1} --os {os-1} --arch {arch-1} 
docker manifest annotate {multi-arch-tag} {os-specific-tag-2} --os {os-2} --arch {arch-2} 
docker manifest push --purge {multi-arch-tag} 

, 그래서 더 필요했다 고정 표시기의 설치 내 사용자 정의 VSTS의 작업에서 Windows 및 Linux 용 18.02 고정 표시기의 CLI를 포장하지 않습니다. manifest 명령은 docker 데몬이 올바르게 작동하지 않아도 보이지 않습니다.

관련 문제