ডকারটি ব্যবহারের পরিমাণে রয়েছে, তবে কোনও ডকার পাত্রে নেই


166

আমি ডকার ১.৯.১. এর সাথে ডকার ভলিউমগুলি সরিয়ে ফেলার ক্ষেত্রে সমস্যায় পড়েছি।

আমি আমার সমস্ত থামানো পাত্রে সরিয়ে ফেলেছি যাতে docker ps -aখালি ফিরে আসে।

আমি যখন ব্যবহার করি তখন আমাকে docker volume lsডকার পাত্রে পুরো হোস্ট দেওয়া হয়:

docker volume ls
DRIVER              VOLUME NAME
local               a94211ea91d66142886d72ec476ece477bb5d2e7e52a5d73b2f2f98f6efa6e66
local               4f673316d690ca2d41abbdc9bf980c7a3f8d67242d76562bbd44079f5f438317
local               eb6ab93effc4b90a2162e6fab6eeeb65bd0e4bd8a9290e1bad503d2a47aa8a78
local               91acb0f7644aec16d23a70f63f70027899017a884dab1f33ac8c4cf0dabe5f2c
local               4932e2fbad8f7e6246af96208d45a266eae11329f1adf176955f80ca2e874f69
local               68fd38fc78a8f02364a94934e9dd3b5d10e51de5b2546e7497eb21d6a1e7b750
local               7043a9642614dd6e9ca013cdf662451d2b3df6b1dddff97211a65ccf9f4c6d47
#etc x 50

যেহেতু এই খণ্ডগুলির কোনওটিতে কোনও গুরুত্বপূর্ণ কিছু নেই, তাই আমি সমস্ত ভলিউমটি দিয়ে মুছে ফেলার চেষ্টা করি docker volume rm $(docker volume ls -q)

প্রক্রিয়াতে, সিংহভাগ সরানো হয়েছে, তবে আমি ফিরে পেয়েছি:

Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use
Error response from daemon: Conflict: volume is in use

তাদের একটি বড় অংশ জন্য। আমার যদি প্রথম স্থানে কোনও পাত্রে বিদ্যমান না থাকে তবে এই খণ্ডগুলি কীভাবে ব্যবহৃত হচ্ছে?


7
ভলিউম এখনও ব্যবহার হচ্ছে কিনা তা পরীক্ষা করতে ডকার রেফারেন্স গণনা ব্যবহার করে; এই সব স্মৃতিতে সম্পন্ন হয়; এটি কোনওরকম কোনও বাগ বা রেসের শর্ত হতে পারে, যার ফলে ধারকটি অপসারণ করা হয়েছিল, তবে কাউন্টারটি আপডেট করা হয়নি। ডেমন পুনরায় চালু করার সাথে এটি সমাধান করা উচিত তবে হ্যাঁ এটি সম্ভবত কোথাও একটি বাগ রয়েছে। আপনার সেটআপে কি বিশেষ কিছু রয়েছে (যেমন আপনি কি ডকার-ইন-ডকার, সোর্ম ব্যবহার করছেন?)। আপনার পাত্রে পরিষ্কার করার জন্য আপনি কি কিছু স্ক্রিপ্ট বা সরঞ্জাম ব্যবহার করেন?
thaJeztah

5
আরে ধন্যবাদ @ ঠাট্টা জেতাঃ ডকার ডিমন পুনরায় চালু করে ( sudo service docker stopএবং sudo service docker start) আমার জন্য এই সমস্ত ভূতের খণ্ড মুছে ফেলেছে। তদুপরি, মনে হচ্ছে আমি এখন ডকার আরএম -v কমান্ডটি ব্যবহার না করে ইস্যু ছাড়াই ভলিউমগুলি সরাতে সক্ষম হয়েছি। কেবলমাত্র ব্যবহারের ক্ষেত্রে উল্লেখযোগ্য পার্থক্য হ'ল আমি উবুন্টু 15.10 তে ডকার-রচনাটি ব্যবহার করছি। আমি যদি এই সমস্যার প্রতিলিপি করতে সক্ষম হয়ে থাকি তবে আমি আবার রিপোর্ট করব তবে অন্যথায় মনে হচ্ছে সাধারণ রিস্টার্টটি যথেষ্ট হবে। ধন্যবাদ!
টাউনওয়ান 123

2
পুনরায় বুট করার পরেও এটি এখনও বলে যে ডকারের পরিমাণ খুব বেশি ব্যবহৃত হচ্ছে ..
হোমস

10
আপনি যদি ডকার রচনাটি ব্যবহার করেন তবে ভলিউমগুলি সরাতে আপনি ডাউন কমান্ড -v যুক্ত করতে পারেন।
নীলস বেচ

5
আমি ডকার বন্ধ করে ফাইল সিস্টেম থেকে ভলিউমগুলি সরিয়ে এবং আবার ডকার শুরু করে এটি ঠিক করেছি। service docker stop && rm -rf /var/lib/docker/volumes/TheVolumIdYouWantToRemove && service docker start
jfgrissom

উত্তর:


169

ডকার সম্পর্কিত সমস্ত কিছু নির্মমভাবে অপসারণ করতে আপনি এই ফাংশনগুলি ব্যবহার করতে পারেন:

removecontainers() {
    docker stop $(docker ps -aq)
    docker rm $(docker ps -aq)
}

armageddon() {
    removecontainers
    docker network prune -f
    docker rmi -f $(docker images --filter dangling=true -qa)
    docker volume rm $(docker volume ls --filter dangling=true -q)
    docker rmi -f $(docker images -qa)
}

আপনি সেগুলিকে আপনার ~/Xrcফাইলে যুক্ত করতে পারেন , যেখানে এক্স আপনার শেল ইন্টারপ্রিটার ( ~/.bashrcযদি আপনি ব্যাশ ব্যবহার করছেন) ফাইল হন এবং কার্যকর করার মাধ্যমে এগুলি পুনরায় লোড করতে পারেন source ~/Xrc। এছাড়াও, আপনি কেবল এগুলি কনসোলে পেস্ট করে অনুলিপি করতে পারেন এবং তারপরে (ফাংশন প্রস্তুত হওয়ার আগে আপনি যে বিকল্প গ্রহণ করেছিলেন তা নির্বিশেষে) কেবল চালান:

armageddon

এটি কেবলমাত্র সাধারণ ডকার পরিষ্কার করার জন্যও কার্যকর। মনে রাখবেন যে এটি আপনার চিত্রগুলিও সরিয়ে ফেলবে, কেবলমাত্র আপনার পাত্রে নয় (চলছে বা চলছে) এবং আপনার কোনও ধরণের ভলিউম।


3
প্রশ্ন অনুযায়ী, docker volume rmআদেশটি ব্যর্থ হয়েছিল। মন্তব্যগুলি থেকে সমাধানটি রেফারেন্স গণনা ঠিক করার জন্য ডকার ডেমন পুনরায় চালু করার মতো বলে মনে হচ্ছে।
বিএমচ

2
@ বিমিচ আপনি যদি মন্তব্যে সাবধানতার সাথে পড়েন তবে এটি এর সমাধান নয়:even after reboot it still says docker volume is in use..
ডেভিড গঞ্জেলিজ রুইজ

1
হলসের আলাদা সমস্যা রয়েছে বলে মনে হয় এবং প্রশ্ন পোস্ট করা প্রশ্নটি এমন নয়। তার উপরে একটি মন্তব্য সন্ধান করুন।
বিএমচ

10
গনসেলস, ফাংশন নামের জন্য তবে এটি বানানযুক্তarmageddon
জোসেফ শেডি

1
এটি আমার সমস্যার সমাধান করেনি। docker-compose down --volumesযদিও ব্যবহার করেছেন (@ রবার্ট কে। বেলের পরামর্শ অনুসারে)
বিআইআইবি

159

ভলিউম মাধ্যমে তৈরি করা হয়েছে docker-compose? যদি তা হয় তবে এটি দ্বারা মুছে ফেলা উচিত :

docker-compose down --volumes

নীলস বেচে নিলসনে ক্রেডিট !


3
এটি কাজ করে :) এটি লক্ষ্য করা ভাল যে এটি সমস্ত পাত্রে নিজেরাই সরিয়ে দেয়। আপনি যদি পাত্রে স্থায়ী মাউন্টে নেই এবং চিত্রটিতে নেই এমন ফাইলগুলি পরিবর্তন করেন তবে এটি অযাচিত হতে পারে।
আলেকজান্ডার ভারভিজক

58

আমি ডকারে মোটামুটি নতুন am আমি কিছু প্রাথমিক পরীক্ষার জগাখিচুড়ি পরিষ্কার করছিলাম এবং কোনও ভলিউমও সরাতে পারিনি। আমি চলমান সমস্ত দমন বন্ধ করে দিয়েছিলাম, একটি সম্পাদন করেছি docker rmi -f $(docker image ls -q), তবে এখনও পেয়েছি Error response from daemon: unable to remove volume: remove uuid: volume is in use

আমি একটি করেছি docker system pruneএবং এটি পরিস্কার করে শেষ ভলিউমটি অপসারণ করার জন্য যা প্রয়োজন:

[0]$ docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
... about 15 containers UUID's truncated

Total reclaimed space: 2.273MB
[0]$ docker volume ls
DRIVER              VOLUME NAME
local              uuid
[0]$ docker volume rm uuid
uuid
[0]$

docker system prune

এই কমান্ডটি ব্যবহার করতে ক্লায়েন্ট এবং ডেমন এপিআই উভয়ই কমপক্ষে 1.25 থাকতে হবে। docker versionআপনার ক্লায়েন্ট এবং ডেমন এপিআই সংস্করণগুলি পরীক্ষা করতে ক্লায়েন্টের কমান্ডটি ব্যবহার করুন ।


কোনও কারণে এটি কাজ করার আগে আমাকে দু'বার করতে হয়েছিল।
মেলামুক

1
আমাকে "ডকার সিস্টেম ছাঁটাই" করতে হবে এবং তারপরে "ডকার ভলিউম আরএম ভলিউম_নাম" করতে হবে। কোনও কারণে, ছাঁটাই মুছে ফেলা পাত্রে আমি ইতিমধ্যে মুছে ফেলেছি। বিভ্রান্ত
ম্যাথু রাইডআউট

54

ভলিউম একটি থামানো পাত্রে ব্যবহার করা যেতে পারে। আপনি আদেশ দ্বারা এই জাতীয় পাত্রে সরাতে পারেন:

docker container prune

তারপরে আপনি না ব্যবহৃত ভলিউম মুছে ফেলতে পারেন

docker volume prune

1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, কেন উত্তর দেওয়া লোকেরা পছন্দ করতে পারে
এলগার মেনসোনাইডস

9

যতক্ষণ ভলিউম কোনও ধারকটির সাথে সম্পর্কিত হয় (তা চলছে বা না চলছে), সেগুলি সরানো যাবে না।

আপনাকে দৌড়াতে হবে

docker inspect <container-id>/<container-name>

প্রতিটি চলমান / অ-চালিত পাত্রে যেখানে এই ভলিউমটি মাউন্ট করা হতে পারে।

যদি কোনও পাত্রে কোনও ভলিউম মাউন্ট করা থাকে তবে আপনার এটি পরিদর্শন কমান্ড আউটপুটের মাউন্টস বিভাগে দেখা উচিত । এটার মতো কিছু :-

"Mounts": [
            {
                "Type": "volume",
                "Name": "user1",
                "Source": "/var/lib/docker/volumes/user1/_data",
                "Destination": "/opt",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

দায়িত্বশীল ধারক (গুলি) বের করার পরে, ব্যবহার করুন:

docker rm -f container-1 container-2 ...container-n পাত্রে চলমান ক্ষেত্রে

docker rm container-1 container-2 ...container-n চলমান কনটেইনার ক্ষেত্রে

হোস্ট মেশিন থেকে পাত্রে সম্পূর্ণ অপসারণ।

তারপরে কমান্ডটি ব্যবহার করে ভলিউমটি সরিয়ে দেওয়ার চেষ্টা করুন: -

docker volume remove <volume-name/volume-id>


1
দরকারী উত্তরের জন্য এই প্রতিক্রিয়াটি বাড়ানো দরকার। এটি কীভাবে পরীক্ষা করবেন সে সম্পর্কে তথ্য যুক্ত করুন।
জেরোইন হাইয়ার

1
আমি বাজি ধরছি docker container pruneবেশিরভাগ ক্ষেত্রেই যথেষ্ট হতে হবে।
এক্স-ইউরি 21

6

বর্তমানে আপনি সাধারণ এবং আরও সম্পূর্ণ পরিচ্ছন্নতার জন্য ডকার এখন যা অফার করেন তা ব্যবহার করতে পারেন:

docker system prune

অতিরিক্তভাবে থামানো কোনও পাত্রে এবং সমস্ত অব্যবহৃত চিত্রগুলি (কেবল চিত্রগুলিকে ঝোলাতে নয়) মুছে ফেলার -aজন্য কমান্ডটিতে পতাকা যুক্ত করুন :

docker system prune -a

3

আমি নিশ্চিত যে এই ভলিউমগুলি আসলে আপনার সিস্টেমে মাউন্ট করা আছে। / প্রোকে / মাউন্টগুলিতে সন্ধান করুন এবং আপনি সেগুলি সেখানে দেখতে পাবেন। আপনার সম্ভবত প্রয়োজন হবে sudo umount <path>বা sudo umount -f -n <path>। আপনার / মাউন্ট / মাউন্টগুলি বা এর মাধ্যমে মাউন্ট করা পথটি পেতে সক্ষম হওয়া উচিতdocker volume inspect


-3

ফ্ল্যাগ-ফ (ফোর্স) দিয়ে আপনার এই কমান্ডটি টাইপ করা উচিত:

sudo docker volume rm -f <VOLUME NAME>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.