Saya mencoba mengambil wadah buruh pelabuhan dari satu mesin dan menjalankannya di mesin lain dan mengalami kesalahan ini: "Respon kesalahan dari daemon: tidak ada perintah yang ditentukan".
Di bawah ini adalah contoh sederhana yang menunjukkan masalah:
docker --versionDocker version 1.10.1, build 9e83765docker pull ubuntudocker run --name u1 -dit ubuntu:latestdocker export -o exported u1docker stop u1docker rm u1docker import exported ubuntu:importeddocker run --name u1 -dit ubuntu:importeddocker: 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 kita mengekspor wadah itu ke file (exported), Berhenti / Hapus wadah, impor file ke gambar baru (ubuntu:imported) dan coba jalankan wadah baru darinya. Gagal.
docker export Tidak mengekspor segala sesuatu tentang wadah — hanya filesystem. Jadi, saat mengimpor dump kembali ke gambar docker baru, Flag tambahan perlu ditentukan untuk membuat ulang konteks.
Misalnya, jika wadah asli berjalan dengan baik karena Dockerfile yang digunakan untuk membuat gambarnya memiliki CMD ["/usr/bin/supervisord"] di dalamnya, lalu impor dump Anda dengan cara ini:
Namun kami tidak dapat menemukan perintah untuk menjalankannya. Solusinya adalah mencantumkan semua kontainer pada mesin pengekspor dan melihat perintah yang dijalankan.
docker ps
Dari sana kita bisa mengetahui cara menjalankan perintah yang benar:
docker run --name msSQL -p 1401:1433 -d mssql:latest /opt/mssql/bin/sqlservr
Ketika Anda mengekspor wadah itu kehilangan sejarah sendiri yang berisi lapisan gambar dan meta data. Jadi kontainer Anda kehilangan status pid-nya.
Setiap wadah 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.
docker save nginx:alpine | ssh rmeote-host docker import -sha256:f6098fc18511abbbfe9e52ed0d0ccc1fbe4f7b018ee1cd85392999aa92ebba1b# we see errorsdocker container run -d -p 2020:80 nginx:alpinedocker: Error response from daemon: No command specified.See 'docker run --help'.
jika menggunakan load
docker save nginx:alpine | ssh remote-host "cat - | docker load"Loaded image: nginx:alpinedocker container run --name nginx -dp 2020:80 nginx:alpine7cc8836bef1e276f8aa986a09186e9e227542be3b094b082b9ab1f6d3c290a99docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES7cc8836bef1e nginx:alpine "/docker-entrypoint.…" 2 seconds ago Up 1 second 0.0.0.0:2020->80/tcp, :::2020->80/tcp nginx