2016-10-14 7 views
0

docker-swarm 클러스터가 있습니다. 관리자 노드는 개인 도커 레지스트리에 대한 자격 증명을 보유합니다. 다른 노드에서 새 A 테이너를 시작할 때 개인 도커 레지스트리에서 이미지를 가져와야 할 수도 있습니다.Docker-swarm이 개인 도커 - 레지스트리에서 누락 된 이미지를 자동으로 가져옵니다.

크레이트 컨테이너 명령에 이미지를 가져오고 (이미 노드에없는 경우) 자격 증명을 제공하도록 명령하는 방법이 있습니까?

예를 들어

:

docker create -e contraint:server==app docker.exampleRegistry.com/path/image:1.0.0 

이 이미지를 끌어와 (다른 노드에서 컨테이너를 시작해야합니다 : 우리는 (민간 고정 표시기 레지스트리에 대한 자격 증명이) 떼 관리자에서 다음 명령을 호출 할 app으로 표기 됨). 도커 레지스트리 docker.exampleRegistry.com은 비공개입니다. 그러나 우리는 얻는다 :

Error response from daemon: unauthorized: authentication required 

답변

0

그것을 얻었다! 고정 표시기의 CLI가 그 일을 할 수 없습니다 (도 우리의 자바 드라이버입니다)하지만, 고정 표시기 원격 API는 자격 증명을 제공하기 위해 X-레지스트리 - 인증 헤더를 사용하여 수행 할 수 있습니다

curl -v -X POST -H "Content-Type: application/json"\ 
-H "X-Registry-Auth: <base64ecoded({"username": "string", "password": "string", "email": "string", "serveraddress" : "string", "auth": ""})>"\ 
-d '{"Image": "docker.exampleRegistry.com/path/image:1.0.0", "Env": ["contraint:server==app"]}'\ 
https://localhost:2376/containers/create?name=container \ 
--key path_to_key \ 
--cacert path_to_ca 

https://github.com/docker/docker/blob/master/docs/reference/api/docker_remote_api.md#authentication