Kubernetes 无法 运行 在本地构建 docker 图像
Kubernetes fails to run a docker image build locally
我正在尝试 运行 我使用 Kubernetes 在本地构建的 docker 图像。
这是我的命令行:
kubectl run myImage --image=myImage --port 3030 --image-pull-policy=IfNotPresent
我看到很多人说我们需要添加 --image-pull-policy=IfNotPresent
标志以便 Kubernetes 可以在本地而不是 Docker Hub 查找图像,但我仍然收到此错误(来自 Minikube pod 上的仪表板、服务和部署)。
Failed to pull image "myImage": rpc error: code = Unknown desc = Error response from daemon: pull access denied for myImage, repository does not exist or may require 'docker login'
不过好像还有问题,我也试了--image-pull-policy=Never
也没用
有什么想法吗?
image
在 minikube
中不可用。
Minikube 使用单独的 docker daemon
。这就是为什么即使图像存在于您的机器中,它仍然在 minikube 中丢失。
首先,通过
将图像发送到minikube
docker save myImage | (eval $(minikube docker-env) && docker load)
此命令会将图像保存为 tar 存档,然后自行将图像加载到 minikube 中。
接下来,在您的部署中使用映像,并将 image-pull-policy
设置为 IfNotPresent
kubectl run myImage --image=myImage --port 3030 --image-pull-policy=IfNotPresent
您在 docker 中创建的图像在 Minikube 中将不可用,因为 Minikube 有它自己的 docker 守护进程,它会在那里检查 docker 图像并且 Docker中心
按照以下步骤访问 Minikube Docker 守护进程,构建并部署 docker 映像:
- 使用 minikube
docker-env command
输出将本地 Docker 守护程序指向 minikube 内部 Docker 注册表所需的环境变量。
minikube docker-env export DOCKER_TLS_VERIFY=”1" export
DOCKER_HOST=”tcp://172.17.0.2:2376" export
DOCKER_CERT_PATH=”/home/user/.minikube/certs” export
MINIKUBE_ACTIVE_DOCKERD=”minikube”
#将你的 shell 指向 minikube 的 docker-daemon, # 运行: eval $(minikube -p minikube docker-env)
要应用这些变量,
eval $(minikube -p minikube docker-env)
现在需要再次构建镜像,以便将其安装在 minikube 注册表中,而不是本地注册表中:
docker build . -t forketyfork/hello-world
forketyfork/hello-world 是 docker 图片的名称。
通过 yaml 将镜像部署到 kubernetes 或 Minkube configuartion file.
kubectl create -f helloworld.yml
helloworld.yml 是 yml/yaml 文件的名称。
- 现在
kubectl get pods
获取pods 的状态
进一步参考,https://medium.com/swlh/how-to-run-locally-built-docker-images-in-kubernetes-b28fbc32cc1d
我正在尝试 运行 我使用 Kubernetes 在本地构建的 docker 图像。
这是我的命令行:
kubectl run myImage --image=myImage --port 3030 --image-pull-policy=IfNotPresent
我看到很多人说我们需要添加 --image-pull-policy=IfNotPresent
标志以便 Kubernetes 可以在本地而不是 Docker Hub 查找图像,但我仍然收到此错误(来自 Minikube pod 上的仪表板、服务和部署)。
Failed to pull image "myImage": rpc error: code = Unknown desc = Error response from daemon: pull access denied for myImage, repository does not exist or may require 'docker login'
不过好像还有问题,我也试了--image-pull-policy=Never
也没用
有什么想法吗?
image
在 minikube
中不可用。
Minikube 使用单独的 docker daemon
。这就是为什么即使图像存在于您的机器中,它仍然在 minikube 中丢失。
首先,通过
将图像发送到minikubedocker save myImage | (eval $(minikube docker-env) && docker load)
此命令会将图像保存为 tar 存档,然后自行将图像加载到 minikube 中。
接下来,在您的部署中使用映像,并将 image-pull-policy
设置为 IfNotPresent
kubectl run myImage --image=myImage --port 3030 --image-pull-policy=IfNotPresent
您在 docker 中创建的图像在 Minikube 中将不可用,因为 Minikube 有它自己的 docker 守护进程,它会在那里检查 docker 图像并且 Docker中心
按照以下步骤访问 Minikube Docker 守护进程,构建并部署 docker 映像:
- 使用 minikube
docker-env command
输出将本地 Docker 守护程序指向 minikube 内部 Docker 注册表所需的环境变量。
minikube docker-env export DOCKER_TLS_VERIFY=”1" export DOCKER_HOST=”tcp://172.17.0.2:2376" export DOCKER_CERT_PATH=”/home/user/.minikube/certs” export MINIKUBE_ACTIVE_DOCKERD=”minikube”
#将你的 shell 指向 minikube 的 docker-daemon, # 运行: eval $(minikube -p minikube docker-env)
要应用这些变量,
eval $(minikube -p minikube docker-env)
现在需要再次构建镜像,以便将其安装在 minikube 注册表中,而不是本地注册表中:
docker build . -t forketyfork/hello-world
forketyfork/hello-world 是 docker 图片的名称。
通过 yaml 将镜像部署到 kubernetes 或 Minkube configuartion file.
kubectl create -f helloworld.yml
helloworld.yml 是 yml/yaml 文件的名称。
- 现在
kubectl get pods
获取pods 的状态
进一步参考,https://medium.com/swlh/how-to-run-locally-built-docker-images-in-kubernetes-b28fbc32cc1d