পুনরায় আমদানি করা ডকার চিত্র / ধারক থেকে "কোনও আদেশ নির্দিষ্ট করা হয়নি"


16

আমি একটি মেশিন থেকে ডকার কনটেইনার নেওয়ার চেষ্টা করছি এবং এটি অন্যটিতে চালাচ্ছি এবং এই ত্রুটির মুখোমুখি হচ্ছি: " ডেমনের ত্রুটির প্রতিক্রিয়া: কোনও আদেশ নির্দিষ্ট নেই "।

নীচে সমস্যাটি দেখানো একটি সরল উদাহরণ রয়েছে:

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.

এই উদাহরণে, আমরা প্রথমে একটি চিত্র (উবুন্টু) টানি এবং এটি u1থেকে সফলভাবে কন্টেনার তৈরি / চালিত করি। তারপরে আমরা সেই ধারকটি কোনও ফাইলে ( exported) রফতানি করি , ধারকটি বন্ধ / সরিয়ে ফেলি, ফাইলটিকে একটি নতুন ছবিতে আমদানি করব ( ubuntu:imported) এবং এটি থেকে নতুন ধারক চালানোর চেষ্টা করি। এটি ব্যর্থ হয়।

উত্তর:


18

docker exportধারক সম্পর্কে সবকিছু রফতানি করে না - কেবল ফাইল সিস্টেম। সুতরাং, নতুন ডকার ইমেজে ডাম্পটি আমদানি করার সময়, প্রসঙ্গটি পুনরায় তৈরি করতে অতিরিক্ত পতাকাগুলি নির্দিষ্ট করা দরকার।

উদাহরণস্বরূপ, যদি মূল ধারকটি ঠিকঠাক চলছিল কারণ এটির চিত্র তৈরির জন্য ব্যবহৃত ডকফার্মিলটি CMD ["/usr/bin/supervisord"]এতে রয়েছে তবে আপনার ডাম্পটি এইভাবে আমদানি করুন:

docker import \
--change 'CMD ["/usr/bin/supervisord"]' \
path/to/dump.tar imagename:tagname

2
আপনি docker inspect imagename:tagnameমূল এবং আমদানিকৃত তুলনা চালাতে পারেন । আমার সাথে কোনও ভাগ্য ছিল না import/ exportএবং --change, যদিও save/ দিয়ে সবকিছু ঠিকঠাক কাজ করে load
ইরক্যাম

2

ডকার রফতানি ও আমদানির চেষ্টা করার সময় এই ত্রুটিটি পেয়েছি microsoft/mssql-server-linux

https://hub.docker.com/r/microsoft/mssql-server-linux/

রফতানি এবং আমদানির আদেশগুলি:

docker export --output "C:\Users\oscar\Desktop\sqlTestMS.tar" msSQL

docker import "C:\Users\oscar\Desktop\sqlTestMS.tar" mssql

তবে এটি চালানোর জন্য আমরা আদেশটি খুঁজে পাইনি। সমাধানটি রফতানিকারী মেশিনে সমস্ত ধারক তালিকাভুক্ত করে কমান্ডটি চালিয়ে দেখছিল।

docker ps

এখানে চিত্র বর্ণনা লিখুন

সেখান থেকে আমরা সঠিক কমান্ডটি চালানোর পদ্ধতিটি জানতে পারি:

docker run --name msSQL -p 1401:1433 -d mssql:latest /opt/mssql/bin/sqlservr

1

আপনি যখন কোনও ধারক রফতানি করবেন তখন এটি নিজের ইতিহাস হারিয়ে ফেলেছে যার মধ্যে ইমেজ স্তর এবং মেটা ডেটা রয়েছে। সুতরাং আপনার ধারকটি এর পিডের অবস্থা হারিয়েছে।

প্রতিটি পাত্রে প্রাথমিক (মূল) প্রক্রিয়া থাকা উচিত। আপনি বাশ হিসাবে ডকফাইলে ডিফল্ট এন্ট্রিপয়েন্টটি অতিক্রম করছেন। [সম্পাদিত] আমি মনে করি এমনকি আপনি ওভাররাইড করবেন না এটি ডিফল্ট ব্যবহার করে, উবুন্টু বেস চিত্রে সংজ্ঞায়িত হয়নি। সুতরাং আপনার প্রাথমিক প্রক্রিয়াটি সিএমডি কমান্ড দিয়ে শুরু করা উচিত। আমি মনে করি কোন বাগ নেই। এটি পুনঃব্যবসায়ের জন্য একটি ডকফরাইল বৈশিষ্ট্য।


আমি কার্যতালিকাতে প্রবেশের পয়েন্টটি কেবলমাত্র আসল সমস্যার দিকে অগ্রাহ্য করছি। রফতানি / আমদানির সময় কিছুই ওভাররাইড করা হয় না।
গ্রেন্দ্রকে

হাই @ ড্রাকস আমার উত্তরটি সদ্য আপডেট হয়েছে। আপনি যখন ধারক রফতানি করবেন তখন কী হবে তা আমি ব্যাখ্যা করছি।
pmoksuz

0

এই অতিরিক্ত পদক্ষেপের সাথে এটি কাজ করে উঠেছে:

  1. নিম্নলিখিত হিসাবে ডকফায়াইল তৈরি করুন:

    FROM ubuntu:imported
    ENTRYPOINT bash
    
  2. নতুন চিত্র তৈরি করুন:

    docker build -t ubuntu:importedwithdockerfile .
    
  3. এখন এটি চলবে:

    docker run --name u1 -dit ubuntu:importedwithdockerfile
    

তবে, কেন কেবল রফতানি করা হয় এবং তারপরে আমদানি করা চিত্রটি এখনই কাজ করে না তা এখনও স্পষ্ট। এটি কি বাগ?


-1

আপনি docker loadসংরক্ষণাগার ফাইল থেকে চিত্রগুলি লোড করতে কমান্ডটি ব্যবহার করতে পারেন । এই কমান্ডটি এক সাথে চিত্র ফাইল এবং আরগগুলি আমদানি করবে।


1
এই ক্ষেত্রে "সংরক্ষণাগার" ফাইলটি কী এবং এটি কীভাবে তৈরি করবেন?
গ্রেন্দ্রকে

2
@ গ্রেনড্রেক docker loadএবং docker saveধারক চিত্রগুলিতে অপারেট করুন (যা থেকে ধারকগুলি তৈরি করা হয়), docker importএবং docker exportপাত্রে চালিত হন।
মাইকেল হ্যাম্পটন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.