![](/img/trans.png)
[英]Cannot get local Kubernetes (minikube) to pull from local Docker registry
[英]Minikube not pull image from local docker container registry
我正在嘗試將容器部署到本地kubernetes,現在我已經安裝了docker deamon,minikube和minikube儀表板。 這一切都很好。 我還在端口5000上設置了本地容器存儲庫。我還推送了2個應用程序映像。 我可以在瀏覽器http:// localhost:5000 / v2 / _catalog上看到它們
現在,當我嘗試使用minikube上吊艙時。
kubectl apply -f ./docker-compose-k.yml --record
我在這樣的儀表板上收到錯誤:
Failed to pull image "localhost:5000/coremvc2": rpc error: code = Unknown desc = Error response from daemon: Get http://localhost:5000/v2/: dial tcp 127.0.0.1:5000: connect: connection refused
這是我的撰寫文件:-
apiVersion: apps/v1
kind: Deployment
metadata:
name: core23
labels:
app: codemvc
spec:
replicas: 1
selector:
matchLabels:
app: coremvc
template:
metadata:
labels:
app: coremvc
spec:
containers:
- name: coremvc
image: localhost:5000/coremvc2
ports:
- containerPort: 80
imagePullPolicy: Always
我不知道為什么由於docker deamon和kubernetes都在同一台機器上而沒有拉這個圖像。 我也嘗試過使用dockerhub映像進行此操作,並且工作正常,但是我想使用本地映像進行此操作。 請給我提示或任何指導。
謝謝,
根據注釋,您使用minikube start
(未指定驅動程序) minikube start
了minikube start
。
這意味着minikube在Virtualbox VM內運行。 為了使您的用例起作用,您有兩種選擇:
minikube ssh
連接到您的VM並在其中安裝注冊表。 然后,您的部署應使用VM的IP。 如果不想使用“虛擬”框,則應閱讀有關其他現有驅動程序以及如何使用它們的文檔 。
希望這可以幫助 !
localhost:5000
指向容器本身。
如果Docker注冊表在運行minikube的同一主機上運行:
獲取主機的IP地址(例如,使用ifconfig
)。 說,它是10.0.2.15
。
標記圖像:
docker tag coremvc2:latest 10.0.2.15:5000/coremvc2:latest
將帶有標簽的圖像推送到本地注冊表:
docker push 10.0.2.15:5000/coremvc2:latest
部署中的更改:
image: localhost:5000/coremvc2
至
image: 10.0.2.15:5000/coremvc2:latest
編輯:如果出現“ ... http:服務器向HTTPS客戶端提供HTTP響應”錯誤,則可以通過編輯/etc/docker/daemon.json
將本地Docker注冊表配置為本地Docker守護程序的不安全注冊表 (如果創建的話,請創建它不存在):
{
... any other settings or remove this line ...
"insecure-registries": ["10.0.2.15:5000"]
}
...然后重啟docker:
sudo service docker restart
不確定如何運行本地Docker注冊表,但這是一種方法:
docker run -d -p 5000:5000 --name registry registry:2
問題是您在主機上設置了docker注冊表,並且minikube在虛擬化環境中運行(根據您的示例為Virtualbox)。
這就是為什么在嘗試在端口5000上獲取映像時收到“連接被拒絕”錯誤的原因。根本原因是,沒有進程在“內部” minikube上偵聽5000。您的注冊表被部署在minikube的“外部”。
正如Marc所說,有兩種方法可以修復ita,而我已復制了這兩種方法。 艱苦的方法會讓您:
Failed to pull image "10.150.0.4:5000/my-alpine": rpc error: code = Unknown desc = Error response from daemon: Get https://10.150.0.4:5000/v2/: http: server gave HTTP response to HTTPS client
因此,您必須根據Docker文檔設置安全的Docker注冊表。
簡單的方法是將其設置在您的minikube之上。
my@linux-vm2:~$ minikube ssh
$ docker run -d -p 5000:5000 --restart=always --name registry registry:2
...
Status: Downloaded newer image for registry:2
$ docker pull nginx:latest
...
Status: Downloaded newer image for nginx:latest
$ docker tag alpine:latest localhost:5000/my-nginx
$ docker push localhost:5000/my-nginx
$ logout
my@linux-vm2:~$ kubectl apply -f ./docker-compose-k.yml --record
deployment.apps/core23 created
my@linux-vm2:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
core23-b44b794cb-vmhwl 1/1 Running 0 4s
my @linux-vm2:~$ kubectl describe pods
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled <unknown> default-scheduler Successfully assigned default/core23-b44b794cb-vmhwl to minikube
Normal Pulling 9s kubelet, minikube Pulling image "localhost:5000/my-nginx"
Normal Pulled 9s kubelet, minikube Successfully pulled image "localhost:5000/my-nginx"
Normal Created 9s kubelet, minikube Created container coremvc
Normal Started 9s kubelet, minikube Started container coremvc
請注意,在此示例中,我一直在使用nginx
而不是coremvc2
(但步驟仍然相同)。
綜上所述,可以通過幾種不同的方式來獲得所需的結果。 請嘗試,讓我們知道它的進展。 干杯:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.