ডকার ইতিমধ্যে কোনও ডকার রেজিস্ট্রি সার্ভারে লগ ইন হয়েছে কিনা তা কীভাবে জানবেন


116

আমি নিশ্চিত না যে আমি ইতিমধ্যে সেমিডিডি: ডকার লগইন ব্যবহার করে সেমিডি লাইনে একটি ডকার রেজিস্ট্রিতে লগ ইন করেছি কিনা sure আপনি চাপ দেওয়ার চেষ্টা না করে আপনি কীভাবে পরীক্ষা করতে বা দেখতে পারবেন যে আপনি লগ ইন করেছেন কিনা?


নিশ্চিত না আমি আপনার প্রশ্নটি বুঝতে পেরেছি? আপনি কি টার্মিনালে লগ ইন করেছেন তা জানতে চান? কেন টার্মিনালে % ডকার ইমেজ কমান্ড চালাবেন না এবং দেখুন আপনার চিত্রগুলি প্রদর্শিত হচ্ছে কিনা?
নুবুন্টু

1
আমি জানতে চাই যে আমি টার্মিনালে ডকারহাব রেজিস্ট্রিতে লগ ইন করেছি কিনা। আমি ভেবেছিলাম ছবিগুলি স্থানীয়, সুতরাং এটি কেবল স্থানীয় চিত্রগুলি দেখায়, ডকারহব চিত্রগুলি না।
ভিলিক মিক্ক-ওজা 21 '15

1
আমি বিশ্বাস করি আপনি একবার ডকারে লগইন হয়ে গেলে আপনি নিজের ডকারহব রেজিস্ট্রিতে সংযুক্ত হয়ে যান। আমি মনে করি না এখানে একটি পৃথক লগইন রয়েছে
নুবুন্টু

উত্তর:


64

2020 সম্পাদনা করুন

( বন্ধ ) গিথুব ইস্যুটির দিকে ফিরে উল্লেখ করা, যেখানে এটি নির্দেশ করা হয়েছে, কোনও আসল অধিবেশন বা রাষ্ট্র নেই;

ডকার লগইন আসলে কোনও ধরণের অবিচ্ছিন্ন সেশন তৈরি করে না, এটি কেবলমাত্র ডিস্কে ব্যবহারকারীর শংসাপত্রগুলি সংরক্ষণ করে রাখে যাতে প্রমাণীকরণের প্রয়োজন হলে এটি লগইন করতে তাদের পড়তে পারে

অন্যরা যেমন উল্লেখ করেছে, আপনি সফলভাবে লগইন করার পরে ফাইলটিতে একটি authsএন্ট্রি / নোড যুক্ত হয় ~/.docker/config.json(এটি বেসরকারী রেজিস্ট্রিগুলির জন্যও কাজ করে )

{
    "auths": {
            "https://index.docker.io/v1/": {}
    },
    ...

লগ আউট করার পরে, এই এন্ট্রিটি তারপর সরানো হবে:

$ docker logout
Removing login credentials for https://index.docker.io/v1/

এর config.jsonপরে ডকারের সামগ্রী :

{
    "auths": {},
    ...

আপনার লগইন স্থিতি পরীক্ষা করতে এই স্ক্রিপ্টটি আপনার স্ক্রিপ্ট বা কোড দ্বারা বিশ্লেষণ করা যাবে।

বিকল্প পদ্ধতি (পুনরায় লগইন)

আপনি ডকারে লগইন করতে পারেন docker login <repository>

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If 
you don't have a Docker ID, head over to https://hub.docker.com to 
create one.
Username:

আপনি যদি ইতিমধ্যে লগইন হয়ে থাকেন তবে প্রম্পটটি দেখতে এমন হবে:

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If 
you don't have a Docker ID, head over to https://hub.docker.com to 
create one.
Username (myusername):        # <-- "myusername"

এর মূল ব্যাখ্যার জন্য ~/.docker/config.json, প্রশ্নটি পরীক্ষা করুন : আমি কোনও প্রাইভেট ডকার রেজিস্ট্রিতে লগইন করেছি কিনা তা কীভাবে বলতে পারি


4
শেষ লিঙ্কটি এর বিষয়বস্তুগুলি পরীক্ষা করার বিষয়ে আলোচনা করে ~/.docker/config.json
দুশান

2
docker infoএমনকি index.docker.io এর জন্য দৃশ্যত অবিশ্বাস্য । বর্তমানে ঠিক আছে লগ ইন এবং না শুধুমাত্র Registryএন্ট্রি দেখুন Username
বিখ্যাতগারকিন

3
ডকার তথ্য আর ব্যবহারকারীর নাম দেখায় না। আমি উইন্ডোতে আছি, ডকার সংস্করণ 18.05.0-ce সহ।
জিওভান্নি বাসি

3
যদি কোনও স্ক্রিপ্ট চেক করা দরকার?
টেকিন

এটি কেবল প্রধান ডকার হাবের জন্যই কাজ করে, আমি মনে করি। অন্য যে কোনও রেপোতে লেখার জন্য আপনাকে আপনার কনফিগারেশন.জসোন ফাইলটি পরীক্ষা করতে হবে।
দুআনে

43

আমি এই চেকের জন্য নিম্নলিখিত দুটি উপায়ের একটি ব্যবহার করি:

1: কনফিগারেশন.জসন ফাইল দেখুন:

আপনি যদি "private.registry.com" এ লগ ইন হয়ে থাকেন তবে নীচের মত একইটির জন্য আপনি একটি এন্ট্রি দেখতে পাবেন ~/.docker/config.json:

"auths": {
    "private.registry.com": {
        "auth": "gibberishgibberishgibberishgibberishgibberishgibberish"
    }
 }

2: ডকার লগইন আবার চেষ্টা করুন:

আপনি যদি বেসরকারী.গ্রিস্ট্রি.কম.এর সাথে ইতিমধ্যে একটি সক্রিয় সেশন রেখেছেন তা দেখার চেষ্টা করছেন, আবার লগইন করার চেষ্টা করুন:

bash$ docker login private.registry.com
Username (logged-in-user):

যদি আপনি উপরের মতো আউটপুট পান তবে এর অর্থ logged-in-userইতিমধ্যে একটি সক্রিয় সেশন ছিল private.registry.com। পরিবর্তে যদি আপনাকে কেবল ব্যবহারকারী নামটির জন্য অনুরোধ করা হয় তবে এটি নির্দেশ করে যে কোনও সক্রিয় সেশন নেই।


13

আপনি লগ ইন করেছেন এবং ব্যবহারকারীর রেজিস্ট্রিটি ব্যবহারের জন্য নীচের কমান্ডটি করতে পারেন:

docker system info | grep -E 'Username|Registry'

6

এখানে এতক্ষণের উত্তরগুলি এতটা কার্যকর নয়:

  • docker info আর এই তথ্য সরবরাহ করে না
  • docker logout একটি বড় অসুবিধা - আপনি ইতিমধ্যে শংসাপত্রগুলি না জানলে এবং সহজেই পুনরায় লগইন করতে না পারলে
  • docker login প্রতিক্রিয়াটি বেশ অবিশ্বাস্য মনে হয় এবং প্রোগ্রাম দ্বারা পার্স করা এত সহজ নয়

আমার সমাধান যা আমার পক্ষে কাজ করেছে তা @ নুবুন্টুর মন্তব্যে তৈরি করে : আমি বুঝতে পেরেছিলাম যে আমি যে চিত্রটি টানতে চাইছি তা যদি আমি ইতিমধ্যে জানতাম তবে ব্যবহারকারী ইতিমধ্যে লগ ইন করেছেন কিনা তা আমি নিশ্চিত নই, আমি এটি করতে পারি:

try pulling target image
-> on failure:
   try logging in
   -> on failure: throw CannotLogInException
   -> on success:
      try pulling target image
      -> on failure: throw CannotPullImageException
      -> on success: (continue)
-> on success: (continue)

এটি এখন পর্যন্ত সেরা স্ট্র্যাজি: কেবল একটি টান চেষ্টা করুন, যদি এটি ব্যর্থ হয় তবে এটি লগইন করা হয়নি (আপনার যে যুক্তিটি বাকী রয়েছে তা প্রতিটি ব্যবহারের ক্ষেত্রে নির্ভর করবে, তবে প্রথম প্রচেষ্টা সর্বজনীনভাবে প্রযোজ্য)।
অলিভার

2
তবে কেউ github.com/moby/moby/issues/15466 এ উল্লেখ করেছিলেন যে ব্যর্থতার অনেকগুলি কারণ রয়েছে, লগইন ইস্যু নয়, তবুও ডকারের প্রস্থান স্থিতি ব্যর্থতার কারণকে আলাদা করতে দেয় না। এটি অন্যান্য সমাধানগুলির চেয়ে এখনও ভাল, তবে একটি সম্পূর্ণ সমাধানের জন্য ডকারের জন্য একটি প্যাচ প্রয়োজন।
অলিভার

5

বেসরকারী নিবন্ধগুলির জন্য কিছুই দেখানো হয় না docker info। তবে লগআউট কমান্ড আপনাকে জানাবে যে আপনি লগ ইন করেছেন কিনা:

 $ docker logout private.example.com
 Not logged in to private.example.com

(যদিও এটি আপনাকে আবার লগ ইন করতে বাধ্য করবে))


5

ডকার ক্লাইপ শংসাপত্রের স্কিমটি আশ্চর্যজনকভাবে জটিল নয়, কেবল একবার দেখুন:

cat ~/.docker/config.json

{
  "auths": {
    "dockerregistry.myregistry.com": {},
    "https://index.docker.io/v1/": {}

এটি উইন্ডোজে বিদ্যমান (ব্যবহার Get-Content ~\.docker\config.json) এবং আপনি শংসাপত্রের সরঞ্জামটিও ঘিরে ফেলতে পারেন যা ব্যবহারকারীর নামটিও তালিকাবদ্ধ করে ... এবং আমি মনে করি আপনি এমনকি পাসওয়ার্ডটি পুনরুদ্ধার করতে পারবেন

. "C:\Program Files\Docker\Docker\resources\bin\docker-credential-wincred.exe" list

{"https://index.docker.io/v1/":"kcd"}

উইন্ডোতে আপনি কেবল ব্যবহারকারীর নাম দেখতে পাবেন, পাসওয়ার্ডটি শংসাপত্র ব্যবস্থাপক (কন্ট্রোল প্যানেল) এ সংরক্ষণ করা হয়
থরবজর্ন রাভন অ্যান্ডারসেন

আমার ধারণা আমি অবাক করে দিয়ে যাব ... docker-credential-wincred.exe <store|get|erase|list|version>যার অর্থ আপনি getনিজের পাসওয়ার্ডটি করতে পারেন
কেসিডি

এই বিড়াল কমান্ডটি লিনাক্স পাথ বিভাজক ব্যবহার করা উচিত: বিড়াল ~ / .ডোকার / কনফিগারেশন.জসন। এটি কারও কাছে নিট-পিক মনে হতে পারে, তবে অন্যান্য পাঠকরা কেবল এটি অনুলিপি / পেস্ট করে চেষ্টা করতে পারেন এবং সহজেই বুঝতে পারবেন না যে "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি" ত্রুটি এর কারণে হয়েছে। :-)
চার্লি আয়ারহার্ট

@ চর্লিয়ারহর্ট আপনি আমার অলসতাকে অবমূল্যায়ন করুন, আমি পাওয়ারশেলের মধ্যে catওরফে ব্যবহার করছিলাম ... উভয়কে অন্তর্ভুক্ত করার জন্য আপডেট করা হয়েছে
কেসিডি

@ কেসিডি, আহ। :-) স্পষ্ট করার জন্য ধন্যবাদ।
চার্লি আরহার্ট

4

সবেমাত্র চেক করা হয়েছে, আজ এটির মতো দেখাচ্ছে:

$ docker login
Authenticating with existing credentials...
Login Succeeded

দ্রষ্টব্য: এটি ম্যাকোজে রয়েছে ডকার সিইর সর্বশেষতম সংস্করণ, ডকার-শংসাপত্র-সহায়ক - উভয় হোমব্রু দিয়ে ইনস্টল করা হয়েছে।


3

কমপক্ষে "উইন্ডোজের জন্য ডকার" এ আপনি দেখতে পাবেন যে আপনি ইউআই-র মাধ্যমে ডকার হাবটিতে লগ ইন করেছেন কিনা। উইন্ডোজ বিজ্ঞপ্তি অঞ্চলে ডকার আইকনটিতে কেবল ডান ক্লিক করুন: ডকার লগ ইন


1
জিইউআই ছাড়া ডকার সংস্করণগুলি সম্পর্কে কী? না উইন্ডো?
জমির ফুজান

1
তারপরে আপনাকে অন্য উত্তরগুলির একটি পদ্ধতির ব্যবহার করতে হবে।
বালুজেআর।

2

আপনি যদি একটি সাধারণ true/falseমান চান , আপনি এটিতে পাইপ করতে docker.jsonপারেন jq

is_logged_in() {
  cat ~/.docker/config.json | jq -r --arg url "${REPOSITORY_URL}" '.auths | has($url)'
}

if [[ "$(is_logged_in)" == "false" ]]; then
  # do stuff, log in
fi

2
আপনি jqএকটি সঠিক প্রস্থান কোড ফিরে আসতে পারেন এবং তারপরে আপনার স্ট্রিং তুলনা করার দরকার নেই:is_logged_in() { jq -e --arg url ${ADDRESS} '.auths | has($url)' ~/.docker/config.json > /dev/null; }; if is_logged_in; then ...
গাস

নিস! ধন্যবাদ!
এমসিডব্লিউ

1

নীচের মত কমান্ড ব্যবহার করুন:

docker info | grep 'name'

WARNING: No swap limit support
Username: <strong>jonasm2009</strong>

আপনি যদি ইতিমধ্যে কোনও ডকার রেজিস্ট্রিতে লগ ইন করেছেন তবে কেবল ব্যবহার করুন ! [চিত্রের বিবরণ এখানে লিখুন ] ( i.stack.imgur.com/JkCxn.png ) আপনি উত্তরটি দেখতে পাবেন।
মেনগ জোনাস

1

উইন্ডোজগুলিতে আপনি এই ফাইলটি দেখে লগইন "অনুমোদন" (লেখক) পরিদর্শন করতে পারেন: [USER_HOME_DIR]। ডকার \ config.json

উদাহরণ: সি: \ USERS \ YOUR_USERANME.docker \ config.json

উইন্ডোজ শংসাপত্রগুলির জন্য এটি দেখতে এর মতো কিছু দেখাবে

{
"auths": {
    "HOST_NAME_HERE": {},
    "https://index.docker.io/v1/": {}
},
"HttpHeaders": {
    "User-Agent": "Docker-Client/18.09.0 (windows)"
},
"credsStore": "wincred",
"stackOrchestrator": "swarm"
}

0

@ ক্রিশ্চিয়ান দ্বারা চিহ্নিত হিসাবে, প্রথমে অপারেশন চেষ্টা করার পরে প্রথমে প্রয়োজনে লগইন করা ভাল। সমস্যাটি হ'ল "যদি প্রয়োজন হয়" তবে মজবুতভাবে করা সুস্পষ্ট নয়। একটি পদ্ধতি হ'ল ডকার অপারেশনের স্ট্যাডারকে কিছু স্ট্রিং যা ট্রায়াল (ত্রুটি ও ত্রুটির দ্বারা) দ্বারা পরিচিত রয়েছে তার সাথে তুলনা করা। উদাহরণ স্বরূপ,

try "docker OPERATION"
if it failed: 
    capture the stderr of "docker OPERATION"
    if it ends with "no basic auth credentials": 
        try docker login
    else if it ends with "not found":
        fatal error: image name/tag probably incorrect
    else if it ends with <other stuff you care to trap>:
        ...
    else:
        fatal error: unknown cause

try docker OPERATION again
if this fails: you're SOL!
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.