No se puede insert una image de la window acoplable en el logging local de OpenShift Origin

El objective es poder tomar una image de Docker en mi computadora portátil y llevarla al logging de imágenes de OpenShift Origin (iniciado por oc cluster up ) para realizar el desarrollo local. No está claro si estoy haciendo algo mal o si hay un error en Docker u OpenShift Origin. Para aquellos que no están familiarizados con OpenShift Origin:

https://github.com/openshift/origin/blob/master/docs/cluster_up_down.md

Cualquier información esclarecedora sería apreciada. Esto es lo que he intentado hasta ahora:

 # oc cluster up Starting OpenShift using openshift/origin:v3.6.0 ... OpenShift server started. The server is accessible via web console at: https://127.0.0.1:8443 You are logged in as: User: developer Password: <any value> To login as administrator: oc login -u system:admin # docker container ls | fgrep origin-docker-registry 9de6bb0cdd28 openshift/origin-docker-registry "/bin/sh -c '/usr/..." # docker inspect 9de6bb0cdd28 | fgrep DOCKER_REGISTRY_PORT "DOCKER_REGISTRY_PORT_5000_TCP_PROTO=tcp", "DOCKER_REGISTRY_PORT=tcp://172.30.1.1:5000", "DOCKER_REGISTRY_PORT_5000_TCP_PORT=5000", "DOCKER_REGISTRY_PORT_5000_TCP_ADDR=172.30.1.1", "DOCKER_REGISTRY_PORT_5000_TCP=tcp://172.30.1.1:5000", # oc whoami -t qH2cTKtIpr1QB1dMw10ffiDGX1iH_uocrtXaFPyTei8 # docker login -u developer -p qH2cTKtIpr1QB1dMw10ffiDGX1iH_uocrtXaFPyTei8 172.30.1.1:5000 Login Succeeded # docker tag alpine:latest 172.30.1.1:5000/alpine:latest # docker push 172.30.1.1:5000/alpine:latest The push refers to a repository [172.30.1.1:5000/alpine] 5bef08742407: Preparing error parsing HTTP 400 response body: unexpected end of JSON input: "" 

Sé que correr alpino no rendirá nada interesante. El resultado es el mismo independientemente de la image que intente empujar. El inicio de session parece funcionar realmente. Si elimino o modifico cualquier parte del token, el inicio de session falla. La versión de Docker que estoy ejecutando:

 # docker version Client: Version: 17.06.0-ce API version: 1.30 Go version: go1.8.3 Git commit: 02c1d87 Built: Fri Jun 23 21:31:53 2017 OS/Arch: darwin/amd64 Server: Version: 17.06.0-ce API version: 1.30 (minimum version 1.12) Go version: go1.8.3 Git commit: 02c1d87 Built: Fri Jun 23 21:51:55 2017 OS/Arch: linux/amd64 Experimental: true 

Puede, como señaló Graham anteriormente, exponer el logging, pero no es obligatorio.

En su caso, al usar una IP interna, el docker push command docker push 172.30.1.1:5000/alpine:latest no es correcto. En cualquier caso (ruta externa o IP interna), el logging interno, basado en el nombre de la image y el nombre, creará una secuencia de imágenes adecuada para usted. El nombre de la secuencia de image y el espacio de nombre / proyecto para ella se toma de la inserción. Esto significa que debe asegurarse de labelr la image con 3 elementos:

  • Docker registry IP y puerto (ruta externa o IP interna)
  • espacio de nombres / proyecto a los que tu usuario tiene acceso (en el caso de oc cluster up myproject es el pnetworkingeterminado al que tu usuario tiene acceso)
  • finalmente el nombre de la stream de image

En su caso, la docker push 172.30.1.1:5000/myproject/alpine:latest debería verse así: docker push 172.30.1.1:5000/myproject/alpine:latest .

Hay potencialmente un par de problemas que pueden afectar al intentar impulsar las imágenes del acoplador.

Antes de llegar a eso, generalmente la forma de dar acceso al logging interno de imágenes sería exponerlo usando una ruta. Dado que el uso de una IP como usted solo se aplica al oc cluster up , le mostrará cómo usar una ruta, de esa manera más genérica.

Para oc cluster up , ejecutaría:

 oc expose svc/docker-registry -n default --as system:admin 

Esto crearía una URL para el logging interno de imágenes de:

 http://docker-registry-default.127.0.0.1.nip.io/ 

Siguiente inicio de session en el logging interno de imágenes usando:

 docker login -u developer -p `oc whoami -t` http://docker-registry-default.127.0.0.1.nip.io:80/ 

Asegúrese de utilizar :80 en la URL cuando inicie session. Si el logging de imágenes interno se expuso utilizando una ruta segura, en su lugar usaría :443 lugar de :80 .

A continuación, desea labelr la image, pero tenga cuidado con lo que la label, ya que desea include el nombre del proyecto en el que se debe agregar la secuencia de la image.

 docker tag alpine:latest docker-registry-default.127.0.0.1.nip.io:80/myproject/alpine 

Vea cómo myproject mi myproject en la label, ya que ese es el proyecto en el que quería que terminara.

Detalles en:

Nuevamente use :80 para el puerto en el nombre. Eso necesita el puerto en la URL al iniciar session, aunque http dado, puede ser un error en el cliente de la command-line 3.6.0 o acoplador. Mencionan esto contra OpenShift Online en este momento, que usa 3.6.0.

Ahora puede empujar la image:

 docker push docker-registry-default.127.0.0.1.nip.io:80/myproject/alpine 

La secuencia completa de commands es:

 $ oc expose svc/docker-registry -n default --as system:admin route "docker-registry" exposed $ docker login -u developer -p `oc whoami -t` http://docker-registry-default.127.0.0.1.nip.io:80/ Login Succeeded $ docker tag alpine:latest docker-registry-default.127.0.0.1.nip.io:80/myproject/alpine $ docker push docker-registry-default.127.0.0.1.nip.io:80/myproject/alpine The push refers to a repository [docker-registry-default.127.0.0.1.nip.io:80/myproject/alpine] 5bef08742407: Layer already exists latest: digest: sha256:471fd6e70d36b9c221f76464d0a9ff78392ccee359da351ebfec45138fb40f9b size: 528 $ oc get is NAME DOCKER REPO TAGS UPDATED alpine 172.30.1.1:5000/myproject/alpine latest 10 seconds ago