Saya mencoba mengambil wadah buruh pelabuhan dari satu mesin dan menjalankannya pada mesin lain dan menemukan kesalahan ini: " Respons kesalahan dari daemon: Tidak ada perintah yang ditentukan ".
Di bawah ini adalah contoh sederhana yang menunjukkan masalah:
docker --version
Docker version 1.10.1, build 9e83765
docker pull ubuntu
docker run --name u1 -dit ubuntu:latest
docker export -o exported u1
docker stop u1
docker rm u1
docker import exported ubuntu:imported
docker run --name u1 -dit ubuntu:imported
docker: Error response from daemon: No command specified.
Dalam contoh itu, pertama-tama kita menarik gambar (ubuntu) dan berhasil membuat / menjalankan wadah u1
dari itu. Kemudian kami mengekspor wadah itu ke file ( exported
), menghentikan / menghapus wadah, mengimpor file ke gambar baru ( ubuntu:imported
) dan mencoba menjalankan wadah baru dari sana. Itu gagal.
docker inspect imagename:tagname
membandingkan yang asli dan yang diimpor. Saya tidak beruntung denganimport
/export
dan--change
, meskipun semuanya berfungsi baik dengansave
/load
.Mendapat kesalahan ini ketika mencoba untuk mengekspor dan mengimpor buruh pelabuhan
microsoft/mssql-server-linux
.https://hub.docker.com/r/microsoft/mssql-server-linux/
Perintah untuk mengekspor dan mengimpor:
Namun kami tidak dapat menemukan perintah untuk menjalankannya. Solusinya adalah daftar semua kontainer pada mesin ekspor dan melihat perintah berlari.
Dari sana kita bisa mengetahui cara menjalankan perintah yang benar:
sumber
Saat Anda mengekspor wadah, itu kehilangan riwayatnya sendiri yang berisi lapisan gambar dan data meta. Jadi wadah Anda kehilangan status pidnya.
Setiap kontainer harus memiliki proses awal (root). Anda mengesampingkan titik masuk default pada dockerfile sebagai bash. [diedit] Saya pikir bahkan Anda tidak menimpanya menggunakan default, tidak didefinisikan dalam gambar dasar ubuntu. Jadi, Anda harus memulai proses awal Anda dengan perintah cmd. Saya pikir tidak ada bug. Ini adalah fitur dockerfile untuk reusablity.
sumber
Mengerjakannya dengan langkah-langkah tambahan ini:
Buat Dockerfile sebagai berikut:
Bangun gambar baru:
Sekarang akan berjalan:
Namun, masih belum jelas mengapa hanya mengekspor dan kemudian gambar yang diimpor tidak berfungsi segera. Apakah ini bug?
sumber
Anda dapat menggunakan
docker load
perintah untuk memuat gambar dari file arsip. perintah ini akan mengimpor file gambar dan argumen bersama.sumber
docker load
dandocker save
operasikan pada gambar wadah (dari mana wadah dibuat), sementaradocker import
dandocker export
operasikan pada wadah.