Catatan:
-
Jawaban ini tidak terbatas pada minikube!
-
Jika ingin membuat registri di Docker minikube lalu jalankan
eval $(minikube docker-env)
terlebih dahulu (untuk membuatdocker
tersedia di terminal mesin host).
Jika tidak, masuk ke mesin virtual melaluiminikube ssh
, lalu lanjutkan dengan langkah-langkah berikut -
tergantung pada sistem operasi Anda, minikube akan secara otomatis memasang homepath Anda ke VM.
-
seperti yang dinyatakan Eli, Anda harus menambahkan registri lokal sebagai tidak aman untuk menggunakan http (mungkin tidak berlaku saat menggunakan localhost tetapi berlaku jika menggunakan nama host lokal)
Jangan gunakan http dalam produksi, lakukan upaya untuk mengamankan semuanya.
Gunakan registri lokal:
docker run -d -p 5000:5000 --restart=always --name local-registry registry:2
Sekarang tandai gambar Anda dengan benar:
docker tag ubuntu localhost:5000/ubuntu
Perhatikan bahwa localhost harus diubah menjadi nama dns dari mesin yang menjalankan wadah registri.
Sekarang dorong gambar Anda ke registri lokal:
docker push localhost:5000/ubuntu
Anda harus dapat menariknya kembali:
docker pull localhost:5000/ubuntu
Sekarang ubah file yaml Anda untuk menggunakan registri lokal.
Pikirkan tentang memasang volume di lokasi yang sesuai, untuk mempertahankan gambar di registri.
Seperti yang dijelaskan dalam buku pegangan, Anda dapat menggunakan kembali daemon Docker dari Minikube dengan eval $(minikube docker-env)
.
Jadi untuk menggunakan gambar tanpa mengunggahnya, Anda dapat mengikuti langkah-langkah berikut:
- Atur variabel lingkungan dengan
eval $(minikube docker-env)
- Bangun gambar dengan daemon Docker dari Minikube (misalnya
docker build -t my-image .
) - Atur gambar dalam spesifikasi pod seperti tag build (misalnya
my-image
) - Atur
imagePullPolicy
keNever
, jika tidak, Kubernetes akan mencoba mengunduh gambar tersebut.
Catatan penting: Anda harus menjalankan eval $(minikube docker-env)
pada setiap terminal yang ingin Anda gunakan, karena hanya mengatur variabel lingkungan untuk sesi shell saat ini.
Apa yang berhasil bagi saya, berdasarkan solusi dari @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