Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
kubernetes无法从本地主机注册表运行docker映像_Docker_Kubernetes_Docker Registry_Kubectl - Fatal编程技术网

kubernetes无法从本地主机注册表运行docker映像

kubernetes无法从本地主机注册表运行docker映像,docker,kubernetes,docker-registry,kubectl,Docker,Kubernetes,Docker Registry,Kubectl,我正在尝试使用kubernetes运行单个docker容器 cat /path/to/docker/docker.conf [Service] ExecStart= ExecStart=/usr/bin/dockerd -H fd:// --live-restore=true --iptables=false --log-opt max-size=100m --log-opt max-file=3 --bip ${FLANNEL_SUBNET} --mtu ${FLANNEL_MTU} DO

我正在尝试使用kubernetes运行单个docker容器

cat /path/to/docker/docker.conf

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --live-restore=true --iptables=false --log-opt max-size=100m --log-opt max-file=3  --bip ${FLANNEL_SUBNET} --mtu ${FLANNEL_MTU}
DOCKER_OPTS="--insecure-registry localhost:5000"
我想创建一个本地注册表,因为我不希望我的图像驻留在公共回购上

docker run -d -p 5050:5000 --restart=always --name registry registry:2
然后我就建立我的形象

docker build -f "Dockerfile" -t localhost:5050/myImage .

docker push localhost:5050/myImage
这两种方法都有效,可以肯定的是,我也可以运行映像

docker run -d -p 5000:5000 --name myImage --hostname myImage -v /some/path/to/mount:/some/path/to/mount localhost:5050/myImage
现在我试着去做

kubectl run myImage --image=localhost:5050/myImage --port=5050
但是

我做错了什么

docker version
 Client:
 Version:      17.05.0-ce
 API version:  1.29


问题是kubernetes试图在自己的容器中解析
localhost

要解决这个问题,您需要让kubernetes能够访问注册表。这可以通过多种方式完成,但其中之一是在kubernetes内部运行注册表,然后提供一个代理,以便也可以在外部访问它

此处将更详细地描述此过程:

重要步骤如下:

  • 在minikube上创建注册表
  • kubectl创建-f kube注册表.yaml

    (kube-registry.yaml可在此处找到:)

  • 将主机端口5000映射到minikube注册表pod
  • kubectl端口转发——名称空间kube系统\
    $(kubectl获取po-n kube系统| grep kube-registry-v0 |\
    awk'{print$1;}')5000:5000


    1.尝试使用docker rmi从计算机中删除映像。然后尝试从您的回购中提取图像。2.下载映像时,您可以查看kubelet日志以找出确切的错误消息。可能注册表主机只是在kube节点上解析,而不是在启动
    kubectl run
    时—如果是这样,
    kubectl
    可能无法在其
    本地主机上找到注册表
    
    docker version
     Client:
     Version:      17.05.0-ce
     API version:  1.29
    
    kubectl version
    Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.6", GitCommit:"114f8911f9597be669a747ab72787e0bd74c9359", GitTreeState:"clean", BuildDate:"2017-03-28T13:36:31Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
    Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.6", GitCommit:"114f8911f9597be669a747ab72787e0bd74c9359", GitTreeState:"clean", BuildDate:"2017-03-28T13:36:31Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}