2016-08-16 155 views
15

我试图在我的本地机器上使用minikube和kitematic来测试kubernetes。但是,kubernetes无法在本地存储库中提取图像(ImagePullBackOff)。ImagePullBackOff与Minikube的本地存储库

我尝试用这个问题来解决:Can not pull docker image from private repo when using Minikube

但我没有/etc/init.d/docker,我认为这是因为运动? (我在OS X上)

任何想法?

谢谢

编辑:

我安装https://github.com/docker/docker-registry,并

docker tag local-image-build localhost:5000/local-image-build 

docker push localhost:5000/local-image-build 

我kubernetes YAML包含:

spec: 
    containers: 
    - name: backend-nginx 
    image: localhost:5000/local-image-build:latest 
    imagePullPolicy: Always 

但它仍然没有工作... 日志:

Error syncing pod, skipping: failed to "StartContainer" 
for "backend-nginx" with ErrImagePull: "Error while pulling image: 
Get http://127.0.0.1:5000/v1/repositories/local-image-build/images: 
dial tcp 127.0.0.1:5000: getsockopt: connection refused 

编辑2:

我不知道我是不是好道路,但我觉得这样的:

http://kubernetes.io/docs/user-guide/images/

但我不不知道我的DOCKER_USER是什么...

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

编辑3

现在我得到了我的荚:

Failed to pull image "local-image-build:latest": Error: image library/local-image-build not found 
Error syncing pod, skipping: failed to "StartContainer" for "backend-nginx" with ErrImagePull: "Error: image library/local-image-build not found" 

帮助我,我快疯了。

EDIT 4

Error syncing pod, skipping: failed to "StartContainer" for "backend-nginx" with ErrImagePull: "Error response from daemon: Get https://192.168.99.101:5000/v1/_ping: tls: oversized record received with length 20527" 

我说:

EXTRA_ARGS=' 
    --label provider=virtualbox 
    --insecure-registry=192.168.99.101:5000 

我泊坞窗的配置,但它仍然不工作,同样的消息....

顺便说一句,我改变了我的YAML:

spec: 
     containers: 
     - name: backend-nginx 
     image: 192.168.99.101:5000/local-image-build:latest 
     imagePullPolicy: Always 

我跑我的注册表这样的:

docker run -d -p 5000:5000 --restart=always --name myregistry registry:2 
+0

你在OS X上? – manojlds

+0

是的,我在OS X上 – Xero

+0

你真的运行过注册表吗?执行命令是'docker run -d -p 5000:5000 --name注册表注册表:2' – Nebril

回答

6

我觉得我做

minikube start --vm-driver="virtualbox" --insecure-registry="$REG_IP":80 

,而不是解决只是

minikube start 

Source

+0

什么是$ REG_IP? – paul

+0

REG_IP ='docker-machine ip registry' – Xero

1

添加--insecure-registry =“$ REG_IP”:80似乎不适用于我。

我不得不使用wlredeye的回答在 Can not pull docker image from private repo when using Minikube 得到它的工作:

对于HTTP注册表这个步骤对我的作品:

  1. minikube SSH
  2. 来编辑/ var/lib中/ boot2docker/profile并添加到$ EXTRA_ARGS --insecure-registry 192.168.99.1(your local machine's IP):5000
  3. 重新启动docker守护程序 sudo /etc/init.d/docker restart
  4. 验证是否可以访问泊坞窗注册表 curl -s -S http://192.168.99.1/v2/_catalog

这minikube版本:v0.14.0

+0

关于这个的两个问题。 “本地机器的IP”是指“注册表的IP”对吗?另外,你如何“加入”这个变量。 –

0

首先,你需要启动一个本地注册表,看来你已经做到了。

docker run -d -p 5000:5000 --restart=always --name myregistry registry:2

您可以通过ifconfig

应该有输出(之后minikube开始使用VirtualBox作为VMdriver)检查minikube IP是这样的:使用

vboxnet0 Link encap:Ethernet HWaddr 0a:00:27:00:00:00
inet addr:192.168.99.1 Bcast:192.168.99.255 Mask:255.255.255.0 inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:515 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:86256 (86.2 KB)

minikube start --insecure-registry=192.168.99.1:5000

实际上,你可以检查您是否可以简单地通过(minikube内)拉自己的图像

docker pull 192.168.99.1:5000/your_own_repo/your_own_images

希望这可以帮助。