注:
-
この回答は minikube に限定されたものではありません!
-
minikube の Docker でレジストリを作成する場合 次に
eval $(minikube docker-env)
を実行します まず (docker
にするため) ホスト マシンの端末で使用できます)。
それ以外の場合は、minikube ssh
経由で仮想マシンに入ります 、次の手順に進みます -
オペレーティング システムに応じて、minikube は自動的にホームパスを VM にマウントします。
-
Eli が述べたように、http を使用するには、ローカル レジストリを安全でないものとして追加する必要があります (localhost を使用する場合は適用されない可能性がありますが、ローカル ホスト名を使用する場合は適用されます)。
本番環境では http を使用しないでください。セキュリティを確保するために努力してください。
ローカル レジストリを使用する:
docker run -d -p 5000:5000 --restart=always --name local-registry registry:2
画像に適切にタグを付けます:
docker tag ubuntu localhost:5000/ubuntu
localhost は、レジストリ コンテナーを実行しているマシンの dns 名に変更する必要があることに注意してください。
イメージをローカル レジストリにプッシュします。
docker push localhost:5000/ubuntu
引き戻せるはずです:
docker pull localhost:5000/ubuntu
ここで、ローカル レジストリを使用するように yaml ファイルを変更します。
レジストリにイメージを永続化するために、適切な場所にボリュームをマウントすることを検討してください。
ハンドブックに記載されているように、Minikube の Docker デーモンを eval $(minikube docker-env)
で再利用できます。 .
画像をアップロードせずに使用するには、次の手順に従います。
<オール>eval $(minikube docker-env)
で環境変数を設定します docker build -t my-image .
)my-image
)imagePullPolicy
を設定します Never
へ 、それ以外の場合、Kubernetes はイメージのダウンロードを試みます。
重要な注意: eval $(minikube docker-env)
を実行する必要があります これは、現在のシェル セッションの環境変数のみを設定するためです。
@svenwltr による解決策に基づいて、私にとって何がうまくいったか:
# Start minikube
minikube start
# Set docker env
eval $(minikube docker-env) # unix shells
minikube docker-env | Invoke-Expression # PowerShell
# Build image
docker build -t foo:0.0.1 .
# Run in minikube
kubectl run hello-foo --image=foo:0.0.1 --image-pull-policy=Never
# Check that it's running
kubectl get pods