带有Minikube的ImagePullBackOff本地存储库

时间:2016-08-16 15:45:50

标签: docker kubernetes kitematic

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

我尝试解决此问题: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"

帮助我,我疯了。

编辑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

到我的docker配置,但它仍然不起作用,相同的消息......

顺便说一句,我改变了我的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

9 个答案:

答案 0 :(得分:15)

使用minikube docker注册表而不是本地docker

https://kubernetes.io/docs/tutorials/stateless-application/hello-minikube/#create-a-docker-container-image

将泊坞窗设置为指向minikube

eval $(minikube docker-env)

推送至minikube docker

docker build -t hello-node:v1 .

将部署设置为不拉取IfNotPresent

K8S默认设置为"始终" 更改为" IfNotPresent"

imagePullPolicy: IfNotPresent

Related Issue

答案 1 :(得分:12)

我想我已经解决了

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

而不仅仅是

minikube start

$ REG_IP是:

REG_IP=docker-machine ip registry

Source

答案 2 :(得分:0)

添加--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. 验证您是否可以访问docker注册表 curl -s -S http://192.168.99.1/v2/_catalog
  5. 这是minikube版本:v0.14.0

答案 3 :(得分:0)

首先你需要启动一个本地注册表,好像你已经完成了它。

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

您可以ifconfig

查看您的迷你管道IP

应该有输出(在minikube开始使用virtualbox作为VMdriver后):

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

希望这可能有所帮助。

答案 4 :(得分:0)

在Mac中我在minikube中无法解析dns,因为/etc/resolv.conf是用我的mac ip配置的。我没有在本地安装dns服务器,因此minikube无法解决任何问题。

我通过在本地安装dns-server解决了这个问题

brew install dnsmasq
sudo brew services start dnsmasq

答案 5 :(得分:0)

就我而言,我必须执行以下步骤。

$ eval $(minikube docker-env)

$ minikube配置设置驱动程序virtualbox

$ minikube开始

答案 6 :(得分:0)

如果您使用的是--vm-driver=none,则需要将https://github.com/WebDevSimplified/Mybrary设置为Never

imagePullPolicy:从不:假定图像在本地存在。没有 尝试拉出图像。

答案 7 :(得分:0)

在 Mac 中,我安装了 docker 客户端,所以我必须这样做

minikube config set driver docker
minikube start

答案 8 :(得分:-2)

我可以用一种非常奇怪的方式解决这个问题:

  • 删除minikube群集 minikube delete
  • 删除minikube配置文件 rm -rf ~/.minikube
  • 启动minikube minikube start