2016-03-26 8 views
13

mam uszkodzoną wyciągnąć z mojego prywatnego archiwum Docker Hub w mojej lokalnej konfiguracji Kubernetes uruchomiony na Vagrant:Jak uzyskać dostęp do prywatnej repozytorium Docker Hub z Kubernetes na Vagrant

Container "hellonode" in pod "hellonode-n1hox" is waiting to start: image can't be pulled

Failed to pull image "username/hellonode": Error: image username/hellonode:latest not found

I utworzyły Kubernetes lokalnie poprzez Vagrant jako opisał here i utworzył sekret o nazwie "dockerhub" z kubectl stworzyć tajny docker-rejestr dockerhub --docker-server = https://registry.hub.docker.com/ --docker-username = username --docker-password = ... --docker-email = .., które dostarczyłem jako tajny obraz.

Używam Kubernetes 1.2.0.

Odpowiedz

38

Aby wyciągnąć prywatną DockerHub gospodarzem obraz z Kubernetes YAML:

uruchomić te polecenia:

DOCKER_REGISTRY_SERVER=https://index.docker.io/v1/ 
DOCKER_USER=Type your dockerhub username, same as when you `docker login` 
DOCKER_EMAIL=Type your dockerhub email, same as when you `docker login` 
DOCKER_PASSWORD=Type your dockerhub pw, same as when you `docker login` 

kubectl create secret docker-registry myregistrykey \ 
    --docker-server=$DOCKER_REGISTRY_SERVER \ 
    --docker-username=$DOCKER_USER \ 
    --docker-password=$DOCKER_PASSWORD \ 
    --docker-email=$DOCKER_EMAIL 

Jeśli nazwa użytkownika na DockerHub jest DOCKER_USER, a prywatne repo nazywa PRIVATE_REPO_NAME, a obraz chcesz ciągnąć jest oznaczona jako latest, stworzyć ten example.yaml plik:

apiVersion: v1 
kind: Pod 
metadata: 
    name: whatever 
spec: 
    containers: 
    - name: whatever 
     image: index.docker.io/DOCKER_USER/PRIVATE_REPO_NAME:latest 
     imagePullPolicy: Always 
     command: [ "echo", "SUCCESS" ] 
    imagePullSecrets: 
    - name: myregistrykey 

Następnie uruchom:

kubectl create -f example.yaml 
+1

najlepsza odpowiedź na pewno – AndrewMcLagan

+0

Ratownik, użyj jego odpowiedzi, jeśli chcesz uniknąć kube-piekła. –

+0

najlepsze i najprostsze wyjaśnienie. działa jak urok – user3913439

0

Możesz wykonać poniższe instrukcje na how to configure nodes to authenticate to a private repository, aby skonfigurować kubki, aby Docker używał twoich referencji, lub podążać za + rozwiązaniem Phagun Baya z imagePullSecrets, które dotyczy strąków.

+0

Dziękujemy za odpowiedź, ale podany link nie działa. –

+0

Teraz powinno być OK, przepraszam. – EricM

5

Tworzenie K8 sekret:

apiVersion: v1 
kind: Secret 
metadata: 
    name: repositorySecretKey 
data: 
    .dockerconfigjson: <base64 encoded docker auth config> 
type: kubernetes.io/dockerconfigjson 

Następnie w bloku lub rc config wspominając tajemnicę. Przykład:

apiVersion: v1 
kind: Pod 
metadata: 
    name: test-pod 
spec: 
    containers: 
    - name: test-pod 
     image: quay.io/example/hello:1.1 
    imagePullSecrets: 
    - name: repositorySecretKey 

Docker auth config

{ 
    "https://quay.io": { 
    "email": ".", 
    "auth": "<base64 encoded auth token>" 
    } 
} 

Albo

kubectl create secret docker-registry myregistrykey \ 
    --docker-server=DOCKER_REGISTRY_SERVER \ 
    --docker-username=DOCKER_USER \ 
    --docker-password=DOCKER_PASSWORD \ 
    --docker-email=DOCKER_EMAIL 
+0

Dobra uwaga: w rzeczywistości jest to mniej w dokumencie, z którym się łączyłem: http://kubernetes.io/docs/user-guide/images/#specifying-imagepullsecrets-on-a-pod. – EricM

+0

Możesz również wypróbować coś takiego jak 'kubectl create secret docker-registry myregistrykey --docker-server = DOCKER_REGISTRY_SERVER --docker-username = DOCKER_USER --docker-password = DOCKER_PASSWORD --docker-email = DOCKER_EMAIL'. To doda sekret automatycznie i będziesz musiał dodać 'imagePullSecrets' w konfiguracji pod lub rc. –

Powiązane problemy