GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menggunakan gambar buruh pelabuhan lokal dengan Minikube?

Catatan:

  • Jawaban ini tidak terbatas pada minikube!

  • Jika ingin membuat registri di Docker minikube lalu jalankan eval $(minikube docker-env) terlebih dahulu (untuk membuat docker tersedia di terminal mesin host).
    Jika tidak, masuk ke mesin virtual melalui minikube 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:

  1. Atur variabel lingkungan dengan eval $(minikube docker-env)
  2. Bangun gambar dengan daemon Docker dari Minikube (misalnya docker build -t my-image . )
  3. Atur gambar dalam spesifikasi pod seperti tag build (misalnya my-image )
  4. Atur imagePullPolicy ke Never , 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

Linux
  1. Bagaimana saya menggunakan Vagrant dengan libvirt

  2. Cara Menggunakan Tulis Docker

  3. Cara Berbagi Gambar Docker Dengan Orang Lain

  1. Cara mengkonfigurasi buruh pelabuhan untuk menggunakan proxy

  2. Cara menggunakan ekspor dengan Python di Linux

  3. Cara menggunakan opsi --since dengan perintah docker logs

  1. Cara Menginstal Jenkins dengan Docker

  2. Cara Menggunakan Gambar Docker, Wadah, dan File Docker Secara Mendalam

  3. Cara Menggunakan Perintah Inspeksi Docker