Saya tidak dapat menemukan cara untuk memindahkan pekerja pelabuhan yang menjalankan kontainer dari satu host ke host lainnya.
Adakah cara agar saya dapat mendorong container saya ke repositori seperti yang kami lakukan untuk gambar? Saat ini, saya tidak menggunakan volume data untuk menyimpan data yang terkait dengan aplikasi yang berjalan di dalam container. Jadi beberapa data berada di dalam container, yang ingin saya pertahankan sebelum mendesain ulang penyiapan.
docker
containers
docker-registry
Dinesh Reddy
sumber
sumber
docker save
adalah untuk menyimpan gambar, bukan wadah. docs.docker.com/engine/reference/commandline/saveJawaban:
Anda tidak dapat memindahkan kontainer buruh pelabuhan yang sedang berjalan dari satu host ke host lainnya.
Anda dapat melakukan perubahan dalam penampung Anda ke gambar dengan
docker commit
, memindahkan gambar ke host baru, lalu memulai penampung baru dengandocker run
. Ini akan menyimpan data apa pun yang telah dibuat aplikasi Anda di dalam penampung.Nb: Itu tidak menyimpan data yang disimpan di dalam volume; Anda perlu memindahkan volume data secara manual ke host baru.
sumber
docker stop x
; 2. lakukan perubahan Andadocker commit -p x x
; 3. simpan wadah ke gambardocker save -o x x
; 4. pindahkan file x ke host baru dan di host baru muat gambar barudokcer load -i x
(jika Anda memulai penampung dengan-v
opsi, Anda juga harus memindahkan file ini ke host baru); 5. jalankan gambar ini dengandocker run (-v is required to mount these files if needed)
Atau, jika Anda tidak ingin memasukkan ke repositori:
Ekspor kontainer ke tarball
Pindahkan tarball Anda ke mesin baru
Impor kembali
sumber
Apa yang akhirnya berhasil bagi saya, setelah banyak manual yang membingungkan dan tutorial yang membingungkan, karena Docker jelas pada saat saya menulis tentang ekspektasi yang meningkat , adalah:
docker save image_name > image_name.tar
cat image_name.tar | docker load
Ekspor dan impor, seperti yang diusulkan dalam jawaban lain tidak mengekspor port dan variabel, yang mungkin diperlukan agar penampung Anda berjalan. Dan Anda mungkin berakhir dengan hal-hal seperti "Tidak ada perintah yang ditentukan" dll ... Saat Anda mencoba memuatnya di komputer lain.
Jadi, perbedaan antara simpan dan ekspor adalah bahwa perintah simpan menyimpan seluruh gambar dengan histori dan metadata, sedangkan perintah ekspor hanya mengekspor struktur file (tanpa histori atau metadata).
Yang perlu dikatakan adalah, jika Anda sudah memiliki port tersebut yang diambil pada hyper-visor buruh pelabuhan yang Anda lakukan impor, oleh beberapa kontainer buruh pelabuhan lain, Anda akan berakhir dalam konflik, dan Anda harus mengkonfigurasi ulang port yang terbuka.
sumber
Dari dokumentasi Docker:
sumber
Gunakan skrip ini: https://github.com/ricardobranco777/docker-volumes.sh
Ini memang menyimpan data dalam volume.
Contoh penggunaan:
sumber
Saya mencoba banyak solusi untuk ini, dan inilah yang berhasil untuk saya:
1. Kirim / simpan kontainer ke gambar baru:
# pekerja galangan stop
#
pekerja galangan komit CONTAINER_NAME # simpan pekerja galangan --output IMAGE_NAME.tar IMAGE_NAME: TAG
ps: "Container kami CONTAINER_NAME memiliki volume yang terpasang di '/ var / home'" (Anda harus memeriksa container Anda untuk menentukan jalur volumenya: # buruh pelabuhan periksa CONTAINER_NAME)
# mkdir backup
# docker run --rm --volumes-from CONTAINER_NAME -v $ {pwd} / backup: / backup ubuntu bash -c “cd / var / home && tar cvf /backup/volume_backup.tar.”
Sekarang ketika Anda melihat $ {pwd} / backup, Anda akan menemukan volume kami di bawah format tar.
Hingga saat ini, kami memiliki gambar conatainer kami 'IMAGE_NAME.tar' dan volumenya 'volume_backup.tar'.
Sekarang Anda bisa, membuat ulang penampung lama yang sama di host baru.
sumber